mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-11 07:46:07 -07:00
Display search results if metadata not found
This commit is contained in:
parent
d36de5a535
commit
25249e7538
6 changed files with 366 additions and 27 deletions
|
@ -779,3 +779,48 @@ class DataFactory(object):
|
|||
else:
|
||||
return 'Unable to delete items. Input user_id not valid.'
|
||||
|
||||
def get_search_query(self, rating_key=''):
|
||||
monitor_db = database.MonitorDatabase()
|
||||
|
||||
if rating_key:
|
||||
query = 'SELECT rating_key, parent_rating_key, grandparent_rating_key, title, parent_title, grandparent_title, media_type ' \
|
||||
'FROM session_history_metadata ' \
|
||||
'WHERE rating_key = ? ' \
|
||||
'OR parent_rating_key = ? ' \
|
||||
'OR grandparent_rating_key = ? ' \
|
||||
'LIMIT 1'
|
||||
result = monitor_db.select(query=query, args=[rating_key, rating_key, rating_key])
|
||||
else:
|
||||
result = []
|
||||
|
||||
query = {}
|
||||
title = None
|
||||
media_type = None
|
||||
|
||||
for item in result:
|
||||
if str(item['rating_key']) == rating_key:
|
||||
title = item['title']
|
||||
media_type = item['media_type']
|
||||
|
||||
elif str(item['parent_rating_key']) == rating_key:
|
||||
title = item['parent_title']
|
||||
if item['media_type'] == episode:
|
||||
media_type = 'season'
|
||||
elif item['media_type'] == track:
|
||||
media_type = 'album'
|
||||
|
||||
elif str(item['grandparent_rating_key']) == rating_key:
|
||||
title = item['grandparent_title']
|
||||
if item['media_type'] == episode:
|
||||
media_type = 'show'
|
||||
elif item['media_type'] == track:
|
||||
media_type = 'artist'
|
||||
|
||||
if title and media_type:
|
||||
query = {'title': title,
|
||||
'media_type': media_type,
|
||||
'rating_key': rating_key}
|
||||
else:
|
||||
return None
|
||||
|
||||
return query
|
||||
|
|
|
@ -1382,13 +1382,13 @@ class PmsConnect(object):
|
|||
return []
|
||||
|
||||
search_results_count = 0
|
||||
search_results_list = {'movies': [],
|
||||
'shows': [],
|
||||
'seasons': [],
|
||||
'episodes': [],
|
||||
'artists': [],
|
||||
'albums': [],
|
||||
'tracks': []
|
||||
search_results_list = {'movie': [],
|
||||
'show': [],
|
||||
'season': [],
|
||||
'episode': [],
|
||||
'artist': [],
|
||||
'album': [],
|
||||
'track': []
|
||||
}
|
||||
|
||||
totalSize = 0
|
||||
|
@ -1409,9 +1409,9 @@ class PmsConnect(object):
|
|||
rating_key = helpers.get_xml_attr(result, 'ratingKey')
|
||||
metadata = self.get_metadata_details(rating_key=rating_key)
|
||||
if metadata['metadata']['type'] == 'movie':
|
||||
search_results_list['movies'].append(metadata['metadata'])
|
||||
search_results_list['movie'].append(metadata['metadata'])
|
||||
elif metadata['metadata']['type'] == 'episode':
|
||||
search_results_list['episodes'].append(metadata['metadata'])
|
||||
search_results_list['episode'].append(metadata['metadata'])
|
||||
search_results_count += 1
|
||||
|
||||
if a.getElementsByTagName('Directory'):
|
||||
|
@ -1420,13 +1420,13 @@ class PmsConnect(object):
|
|||
rating_key = helpers.get_xml_attr(result, 'ratingKey')
|
||||
metadata = self.get_metadata_details(rating_key=rating_key)
|
||||
if metadata['metadata']['type'] == 'show':
|
||||
search_results_list['shows'].append(metadata['metadata'])
|
||||
search_results_list['show'].append(metadata['metadata'])
|
||||
elif metadata['metadata']['type'] == 'season':
|
||||
search_results_list['seasons'].append(metadata['metadata'])
|
||||
search_results_list['season'].append(metadata['metadata'])
|
||||
elif metadata['metadata']['type'] == 'artist':
|
||||
search_results_list['artists'].append(metadata['metadata'])
|
||||
search_results_list['artist'].append(metadata['metadata'])
|
||||
elif metadata['metadata']['type'] == 'album':
|
||||
search_results_list['albums'].append(metadata['metadata'])
|
||||
search_results_list['album'].append(metadata['metadata'])
|
||||
search_results_count += 1
|
||||
|
||||
if a.getElementsByTagName('Track'):
|
||||
|
@ -1434,7 +1434,7 @@ class PmsConnect(object):
|
|||
for result in result_data:
|
||||
rating_key = helpers.get_xml_attr(result, 'ratingKey')
|
||||
metadata = self.get_metadata_details(rating_key=rating_key)
|
||||
search_results_list['tracks'].append(metadata['metadata'])
|
||||
search_results_list['track'].append(metadata['metadata'])
|
||||
search_results_count += 1
|
||||
|
||||
output = {'results_count': search_results_count,
|
||||
|
|
|
@ -749,6 +749,7 @@ class WebInterface(object):
|
|||
@cherrypy.expose
|
||||
def info(self, item_id=None, source=None, **kwargs):
|
||||
metadata = None
|
||||
query = None
|
||||
|
||||
config = {
|
||||
"pms_identifier": plexpy.CONFIG.PMS_IDENTIFIER
|
||||
|
@ -762,12 +763,15 @@ class WebInterface(object):
|
|||
result = pms_connect.get_metadata_details(rating_key=item_id)
|
||||
if result:
|
||||
metadata = result['metadata']
|
||||
else:
|
||||
data_factory = datafactory.DataFactory()
|
||||
query = data_factory.get_search_query(rating_key=item_id)
|
||||
|
||||
if metadata:
|
||||
return serve_template(templatename="info.html", data=metadata, title="Info", config=config)
|
||||
else:
|
||||
logger.warn('Unable to retrieve data.')
|
||||
return serve_template(templatename="info.html", data=None, title="Info")
|
||||
return serve_template(templatename="info.html", data=None, query=query, title="Info")
|
||||
|
||||
@cherrypy.expose
|
||||
def get_user_recently_watched(self, user=None, user_id=None, limit='10', **kwargs):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue