Display search results if metadata not found

This commit is contained in:
Jonathan Wong 2015-09-24 19:33:44 -07:00
parent d36de5a535
commit 25249e7538
6 changed files with 366 additions and 27 deletions

View file

@ -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

View file

@ -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,

View file

@ -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):