Don't nest metadata dict

* Return metadata dict directly
This commit is contained in:
JonnyWong16 2016-10-13 20:52:50 -07:00 committed by JonnyWong16
parent 19e379f084
commit 6d0327f662
9 changed files with 187 additions and 198 deletions

96
API.md
View file

@ -783,55 +783,53 @@ Optional parameters:
Returns: Returns:
json: json:
{"metadata": {"actors": [
{"actors": [ "Kit Harington",
"Kit Harington", "Emilia Clarke",
"Emilia Clarke", "Isaac Hempstead-Wright",
"Isaac Hempstead-Wright", "Maisie Williams",
"Maisie Williams", "Liam Cunningham",
"Liam Cunningham", ],
], "added_at": "1461572396",
"added_at": "1461572396", "art": "/library/metadata/1219/art/1462175063",
"art": "/library/metadata/1219/art/1462175063", "content_rating": "TV-MA",
"content_rating": "TV-MA", "directors": [
"directors": [ "Jeremy Podeswa"
"Jeremy Podeswa" ],
], "duration": "2998290",
"duration": "2998290", "genres": [
"genres": [ "Adventure",
"Adventure", "Drama",
"Drama", "Fantasy"
"Fantasy" ],
], "grandparent_rating_key": "1219",
"grandparent_rating_key": "1219", "grandparent_thumb": "/library/metadata/1219/thumb/1462175063",
"grandparent_thumb": "/library/metadata/1219/thumb/1462175063", "grandparent_title": "Game of Thrones",
"grandparent_title": "Game of Thrones", "guid": "com.plexapp.agents.thetvdb://121361/6/1?lang=en",
"guid": "com.plexapp.agents.thetvdb://121361/6/1?lang=en", "labels": [],
"labels": [], "last_viewed_at": "1462165717",
"last_viewed_at": "1462165717", "library_name": "TV Shows",
"library_name": "TV Shows", "media_index": "1",
"media_index": "1", "media_type": "episode",
"media_type": "episode", "originally_available_at": "2016-04-24",
"originally_available_at": "2016-04-24", "parent_media_index": "6",
"parent_media_index": "6", "parent_rating_key": "153036",
"parent_rating_key": "153036", "parent_thumb": "/library/metadata/153036/thumb/1462175062",
"parent_thumb": "/library/metadata/153036/thumb/1462175062", "parent_title": "",
"parent_title": "", "rating": "7.8",
"rating": "7.8", "rating_key": "153037",
"rating_key": "153037", "section_id": "2",
"section_id": "2", "studio": "HBO",
"studio": "HBO", "summary": "Jon Snow is dead. Daenerys meets a strong man. Cersei sees her daughter again.",
"summary": "Jon Snow is dead. Daenerys meets a strong man. Cersei sees her daughter again.", "tagline": "",
"tagline": "", "thumb": "/library/metadata/153037/thumb/1462175060",
"thumb": "/library/metadata/153037/thumb/1462175060", "title": "The Red Woman",
"title": "The Red Woman", "updated_at": "1462175060",
"updated_at": "1462175060", "writers": [
"writers": [ "David Benioff",
"David Benioff", "D. B. Weiss"
"D. B. Weiss" ],
], "year": "2016"
"year": "2016"
}
} }
``` ```

View file

@ -249,10 +249,10 @@ class TimelineHandler(object):
def get_metadata(self): def get_metadata(self):
pms_connect = pmsconnect.PmsConnect() pms_connect = pmsconnect.PmsConnect()
metadata_list = pms_connect.get_metadata_details(self.get_rating_key()) metadata = pms_connect.get_metadata_details(self.get_rating_key())
if metadata_list: if metadata:
return metadata_list['metadata'] return metadata
return None return None
@ -260,10 +260,9 @@ class TimelineHandler(object):
if self.is_item(): if self.is_item():
logger.debug(u"PlexPy TimelineHandler :: Library item %s added to Plex." % str(rating_key)) logger.debug(u"PlexPy TimelineHandler :: Library item %s added to Plex." % str(rating_key))
pms_connect = pmsconnect.PmsConnect() pms_connect = pmsconnect.PmsConnect()
metadata_list = pms_connect.get_metadata_details(rating_key) metadata = pms_connect.get_metadata_details(rating_key)
if metadata_list: if metadata:
metadata = metadata_list['metadata']
data = {'timeline_data': metadata, 'notify_action': 'on_created'} data = {'timeline_data': metadata, 'notify_action': 'on_created'}
data.update(kwargs) data.update(kwargs)
plexpy.NOTIFY_QUEUE.put(data) plexpy.NOTIFY_QUEUE.put(data)

View file

@ -221,18 +221,16 @@ def check_recently_added():
if 0 < time_threshold - int(item['added_at']) <= time_interval: if 0 < time_threshold - int(item['added_at']) <= time_interval:
if item['media_type'] == 'movie': if item['media_type'] == 'movie':
metadata_list = pms_connect.get_metadata_details(item['rating_key']) metadata = pms_connect.get_metadata_details(item['rating_key'])
if metadata_list: if metadata:
metadata = [metadata_list['metadata']] metadata = [metadata]
else: else:
logger.error(u"PlexPy Monitor :: Unable to retrieve metadata for rating_key %s" \ logger.error(u"PlexPy Monitor :: Unable to retrieve metadata for rating_key %s" \
% str(item['rating_key'])) % str(item['rating_key']))
else: else:
metadata_list = pms_connect.get_metadata_children_details(item['rating_key']) metadata = pms_connect.get_metadata_children_details(item['rating_key'])
if metadata_list: if not metadata:
metadata = metadata_list['metadata']
else:
logger.error(u"PlexPy Monitor :: Unable to retrieve children metadata for rating_key %s" \ logger.error(u"PlexPy Monitor :: Unable to retrieve children metadata for rating_key %s" \
% str(item['rating_key'])) % str(item['rating_key']))
@ -253,10 +251,10 @@ def check_recently_added():
if 0 < time_threshold - int(item['added_at']) <= time_interval: if 0 < time_threshold - int(item['added_at']) <= time_interval:
if item['media_type'] == 'episode' or item['media_type'] == 'track': if item['media_type'] == 'episode' or item['media_type'] == 'track':
metadata_list = pms_connect.get_metadata_details(item['grandparent_rating_key']) metadata = pms_connect.get_metadata_details(item['grandparent_rating_key'])
if metadata_list: if metadata:
item = metadata_list['metadata'] item = metadata
else: else:
logger.error(u"PlexPy Monitor :: Unable to retrieve grandparent metadata for grandparent_rating_key %s" \ logger.error(u"PlexPy Monitor :: Unable to retrieve grandparent metadata for grandparent_rating_key %s" \
% str(item['rating_key'])) % str(item['rating_key']))

View file

@ -194,10 +194,8 @@ class ActivityProcessor(object):
if not is_import: if not is_import:
logger.debug(u"PlexPy ActivityProcessor :: Fetching metadata for item ratingKey %s" % session['rating_key']) logger.debug(u"PlexPy ActivityProcessor :: Fetching metadata for item ratingKey %s" % session['rating_key'])
pms_connect = pmsconnect.PmsConnect() pms_connect = pmsconnect.PmsConnect()
result = pms_connect.get_metadata_details(rating_key=str(session['rating_key'])) metadata = pms_connect.get_metadata_details(rating_key=str(session['rating_key']))
if result and result['metadata']: if not metadata:
metadata = result['metadata']
else:
return False return False
else: else:
metadata = import_metadata metadata = import_metadata

View file

@ -875,7 +875,8 @@ class DataFactory(object):
monitor_db = database.MonitorDatabase() monitor_db = database.MonitorDatabase()
if rating_key: if rating_key:
query = 'SELECT session_history_metadata.rating_key, session_history_metadata.parent_rating_key, ' \ query = 'SELECT session_history_metadata.id, ' \
'session_history_metadata.rating_key, session_history_metadata.parent_rating_key, ' \
'session_history_metadata.grandparent_rating_key, session_history_metadata.title, ' \ 'session_history_metadata.grandparent_rating_key, session_history_metadata.title, ' \
'session_history_metadata.parent_title, session_history_metadata.grandparent_title, ' \ 'session_history_metadata.parent_title, session_history_metadata.grandparent_title, ' \
'session_history_metadata.full_title, library_sections.section_name, ' \ 'session_history_metadata.full_title, library_sections.section_name, ' \
@ -897,7 +898,9 @@ class DataFactory(object):
'FROM session_history_metadata ' \ 'FROM session_history_metadata ' \
'JOIN library_sections ON session_history_metadata.section_id = library_sections.section_id ' \ 'JOIN library_sections ON session_history_metadata.section_id = library_sections.section_id ' \
'JOIN session_history_media_info ON session_history_metadata.id = session_history_media_info.id ' \ 'JOIN session_history_media_info ON session_history_metadata.id = session_history_media_info.id ' \
'WHERE session_history_metadata.rating_key = ?' 'WHERE session_history_metadata.rating_key = ? ' \
'ORDER BY session_history_metadata.id DESC ' \
'LIMIT 1'
result = monitor_db.select(query=query, args=[rating_key]) result = monitor_db.select(query=query, args=[rating_key])
else: else:
result = [] result = []
@ -953,10 +956,10 @@ class DataFactory(object):
} }
metadata_list.append(metadata) metadata_list.append(metadata)
metadata = session.filter_session_info(metadata_list, filter_key='section_id') filtered_metadata_list = session.filter_session_info(metadata_list, filter_key='section_id')
if metadata: if filtered_metadata_list:
return {'metadata': session.filter_session_info(metadata_list, filter_key='section_id')[0]} return filtered_metadata_list[0]
else: else:
return [] return []
@ -1225,10 +1228,9 @@ class DataFactory(object):
if mapping: if mapping:
logger.info(u"PlexPy DataFactory :: Updating metadata in the database.") logger.info(u"PlexPy DataFactory :: Updating metadata in the database.")
for old_key, new_key in mapping.iteritems(): for old_key, new_key in mapping.iteritems():
result = pms_connect.get_metadata_details(new_key) metadata = pms_connect.get_metadata_details(new_key)
if result: if metadata:
metadata = result['metadata']
if metadata['media_type'] == 'show' or metadata['media_type'] == 'artist': if metadata['media_type'] == 'show' or metadata['media_type'] == 'artist':
# check grandparent_rating_key (2 tables) # check grandparent_rating_key (2 tables)
monitor_db.action('UPDATE session_history SET grandparent_rating_key = ? WHERE grandparent_rating_key = ?', monitor_db.action('UPDATE session_history SET grandparent_rating_key = ? WHERE grandparent_rating_key = ?',

View file

@ -560,12 +560,11 @@ class Libraries(object):
if item['rating_key'] and not item['file_size']: if item['rating_key'] and not item['file_size']:
file_size = 0 file_size = 0
child_metadata = pms_connect.get_metadata_children_details(rating_key=item['rating_key'], metadata = pms_connect.get_metadata_children_details(rating_key=item['rating_key'],
get_children=True, get_children=True,
get_media_info=True) get_media_info=True)
metadata_list = child_metadata['metadata']
for child_metadata in metadata_list: for child_metadata in metadata:
file_size += helpers.cast_to_int(child_metadata.get('file_size', 0)) file_size += helpers.cast_to_int(child_metadata.get('file_size', 0))
item['file_size'] = file_size item['file_size'] = file_size

View file

@ -259,19 +259,17 @@ def build_media_notify_params(notify_action=None, session=None, timeline=None, *
rating_key = timeline['rating_key'] rating_key = timeline['rating_key']
pms_connect = pmsconnect.PmsConnect() pms_connect = pmsconnect.PmsConnect()
metadata_list = pms_connect.get_metadata_details(rating_key=rating_key, get_media_info=True) metadata = pms_connect.get_metadata_details(rating_key=rating_key, get_media_info=True)
if metadata_list: if not metadata:
metadata = metadata_list['metadata']
else:
logger.error(u"PlexPy NotificationHandler :: Unable to retrieve metadata for rating_key %s" % str(rating_key)) logger.error(u"PlexPy NotificationHandler :: Unable to retrieve metadata for rating_key %s" % str(rating_key))
return None, None return None, None
child_metadata = grandchild_metadata = [] child_metadata = grandchild_metadata = []
for key in kwargs.pop('child_keys', []): for key in kwargs.pop('child_keys', []):
child_metadata.append(pms_connect.get_metadata_details(rating_key=key)['metadata']) child_metadata.append(pms_connect.get_metadata_details(rating_key=key))
for key in kwargs.pop('grandchild_keys', []): for key in kwargs.pop('grandchild_keys', []):
grandchild_metadata.append(pms_connect.get_metadata_details(rating_key=key)['metadata']) grandchild_metadata.append(pms_connect.get_metadata_details(rating_key=key))
current_activity = pms_connect.get_current_activity() current_activity = pms_connect.get_current_activity()
sessions = current_activity.get('sessions', []) sessions = current_activity.get('sessions', [])

View file

@ -577,7 +577,7 @@ class PmsConnect(object):
metadata_type = helpers.get_xml_attr(metadata_main, 'type') metadata_type = helpers.get_xml_attr(metadata_main, 'type')
else: else:
logger.debug(u"PlexPy Pmsconnect :: Metadata failed") logger.debug(u"PlexPy Pmsconnect :: Metadata failed")
return None return []
section_id = helpers.get_xml_attr(a, 'librarySectionID') section_id = helpers.get_xml_attr(a, 'librarySectionID')
library_name = helpers.get_xml_attr(a, 'librarySectionTitle') library_name = helpers.get_xml_attr(a, 'librarySectionTitle')
@ -642,7 +642,7 @@ class PmsConnect(object):
'genres': genres, 'genres': genres,
'labels': labels 'labels': labels
} }
metadata_list = {'metadata': metadata} metadata_list.append(metadata)
elif metadata_type == 'show': elif metadata_type == 'show':
metadata = {'media_type': metadata_type, metadata = {'media_type': metadata_type,
@ -678,7 +678,7 @@ class PmsConnect(object):
'genres': genres, 'genres': genres,
'labels': labels 'labels': labels
} }
metadata_list = {'metadata': metadata} metadata_list.append(metadata)
elif metadata_type == 'season': elif metadata_type == 'season':
parent_rating_key = helpers.get_xml_attr(metadata_main, 'parentRatingKey') parent_rating_key = helpers.get_xml_attr(metadata_main, 'parentRatingKey')
@ -694,12 +694,12 @@ class PmsConnect(object):
'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'), 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
'media_index': helpers.get_xml_attr(metadata_main, 'index'), 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'), 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
'studio': show_details['metadata']['studio'], 'studio': show_details['studio'],
'content_rating': show_details['metadata']['content_rating'], 'content_rating': show_details['content_rating'],
'summary': show_details['metadata']['summary'], 'summary': show_details['summary'],
'tagline': helpers.get_xml_attr(metadata_main, 'tagline'), 'tagline': helpers.get_xml_attr(metadata_main, 'tagline'),
'rating': helpers.get_xml_attr(metadata_main, 'rating'), 'rating': helpers.get_xml_attr(metadata_main, 'rating'),
'duration': show_details['metadata']['duration'], 'duration': show_details['duration'],
'year': helpers.get_xml_attr(metadata_main, 'year'), 'year': helpers.get_xml_attr(metadata_main, 'year'),
'thumb': helpers.get_xml_attr(metadata_main, 'thumb'), 'thumb': helpers.get_xml_attr(metadata_main, 'thumb'),
'parent_thumb': helpers.get_xml_attr(metadata_main, 'parentThumb'), 'parent_thumb': helpers.get_xml_attr(metadata_main, 'parentThumb'),
@ -710,13 +710,13 @@ class PmsConnect(object):
'updated_at': helpers.get_xml_attr(metadata_main, 'updatedAt'), 'updated_at': helpers.get_xml_attr(metadata_main, 'updatedAt'),
'last_viewed_at': helpers.get_xml_attr(metadata_main, 'lastViewedAt'), 'last_viewed_at': helpers.get_xml_attr(metadata_main, 'lastViewedAt'),
'guid': helpers.get_xml_attr(metadata_main, 'guid'), 'guid': helpers.get_xml_attr(metadata_main, 'guid'),
'directors': show_details['metadata']['directors'], 'directors': show_details['directors'],
'writers': show_details['metadata']['writers'], 'writers': show_details['writers'],
'actors': show_details['metadata']['actors'], 'actors': show_details['actors'],
'genres': show_details['metadata']['genres'], 'genres': show_details['genres'],
'labels': show_details['metadata']['labels'] 'labels': show_details['labels']
} }
metadata_list = {'metadata': metadata} metadata_list.append(metadata)
elif metadata_type == 'episode': elif metadata_type == 'episode':
grandparent_rating_key = helpers.get_xml_attr(metadata_main, 'grandparentRatingKey') grandparent_rating_key = helpers.get_xml_attr(metadata_main, 'grandparentRatingKey')
@ -732,7 +732,7 @@ class PmsConnect(object):
'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'), 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'),
'media_index': helpers.get_xml_attr(metadata_main, 'index'), 'media_index': helpers.get_xml_attr(metadata_main, 'index'),
'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'), 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
'studio': show_details['metadata']['studio'], 'studio': show_details['studio'],
'content_rating': helpers.get_xml_attr(metadata_main, 'contentRating'), 'content_rating': helpers.get_xml_attr(metadata_main, 'contentRating'),
'summary': helpers.get_xml_attr(metadata_main, 'summary'), 'summary': helpers.get_xml_attr(metadata_main, 'summary'),
'tagline': helpers.get_xml_attr(metadata_main, 'tagline'), 'tagline': helpers.get_xml_attr(metadata_main, 'tagline'),
@ -750,11 +750,11 @@ class PmsConnect(object):
'guid': helpers.get_xml_attr(metadata_main, 'guid'), 'guid': helpers.get_xml_attr(metadata_main, 'guid'),
'directors': directors, 'directors': directors,
'writers': writers, 'writers': writers,
'actors': show_details['metadata']['actors'], 'actors': show_details['actors'],
'genres': show_details['metadata']['genres'], 'genres': show_details['genres'],
'labels': show_details['metadata']['labels'] 'labels': show_details['labels']
} }
metadata_list = {'metadata': metadata} metadata_list.append(metadata)
elif metadata_type == 'artist': elif metadata_type == 'artist':
metadata = {'media_type': metadata_type, metadata = {'media_type': metadata_type,
@ -790,7 +790,7 @@ class PmsConnect(object):
'genres': genres, 'genres': genres,
'labels': labels 'labels': labels
} }
metadata_list = {'metadata': metadata} metadata_list.append(metadata)
elif metadata_type == 'album': elif metadata_type == 'album':
parent_rating_key = helpers.get_xml_attr(metadata_main, 'parentRatingKey') parent_rating_key = helpers.get_xml_attr(metadata_main, 'parentRatingKey')
@ -808,7 +808,7 @@ class PmsConnect(object):
'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'), 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'),
'studio': helpers.get_xml_attr(metadata_main, 'studio'), 'studio': helpers.get_xml_attr(metadata_main, 'studio'),
'content_rating': helpers.get_xml_attr(metadata_main, 'contentRating'), 'content_rating': helpers.get_xml_attr(metadata_main, 'contentRating'),
'summary': artist_details['metadata']['summary'], 'summary': artist_details['summary'],
'tagline': helpers.get_xml_attr(metadata_main, 'tagline'), 'tagline': helpers.get_xml_attr(metadata_main, 'tagline'),
'rating': helpers.get_xml_attr(metadata_main, 'rating'), 'rating': helpers.get_xml_attr(metadata_main, 'rating'),
'duration': helpers.get_xml_attr(metadata_main, 'duration'), 'duration': helpers.get_xml_attr(metadata_main, 'duration'),
@ -828,7 +828,7 @@ class PmsConnect(object):
'genres': genres, 'genres': genres,
'labels': labels 'labels': labels
} }
metadata_list = {'metadata': metadata} metadata_list.append(metadata)
elif metadata_type == 'track': elif metadata_type == 'track':
parent_rating_key = helpers.get_xml_attr(metadata_main, 'parentRatingKey') parent_rating_key = helpers.get_xml_attr(metadata_main, 'parentRatingKey')
@ -850,7 +850,7 @@ class PmsConnect(object):
'tagline': helpers.get_xml_attr(metadata_main, 'tagline'), 'tagline': helpers.get_xml_attr(metadata_main, 'tagline'),
'rating': helpers.get_xml_attr(metadata_main, 'rating'), 'rating': helpers.get_xml_attr(metadata_main, 'rating'),
'duration': helpers.get_xml_attr(metadata_main, 'duration'), 'duration': helpers.get_xml_attr(metadata_main, 'duration'),
'year': album_details['metadata']['year'], 'year': album_details['year'],
'thumb': helpers.get_xml_attr(metadata_main, 'thumb'), 'thumb': helpers.get_xml_attr(metadata_main, 'thumb'),
'parent_thumb': helpers.get_xml_attr(metadata_main, 'parentThumb'), 'parent_thumb': helpers.get_xml_attr(metadata_main, 'parentThumb'),
'grandparent_thumb': helpers.get_xml_attr(metadata_main, 'grandparentThumb'), 'grandparent_thumb': helpers.get_xml_attr(metadata_main, 'grandparentThumb'),
@ -863,13 +863,13 @@ class PmsConnect(object):
'directors': directors, 'directors': directors,
'writers': writers, 'writers': writers,
'actors': actors, 'actors': actors,
'genres': album_details['metadata']['genres'], 'genres': album_details['genres'],
'labels': album_details['metadata']['labels'] 'labels': album_details['labels']
} }
metadata_list = {'metadata': metadata} metadata_list.append(metadata)
else: else:
return None return []
if get_media_info and metadata_main.getElementsByTagName('Media'): if get_media_info and metadata_main.getElementsByTagName('Media'):
item_media = metadata_main.getElementsByTagName('Media')[0] item_media = metadata_main.getElementsByTagName('Media')[0]
@ -888,7 +888,10 @@ class PmsConnect(object):
} }
metadata.update(media_info) metadata.update(media_info)
return metadata_list if metadata_list:
return metadata_list[0]
else:
return []
def get_metadata_children_details(self, rating_key='', get_children=False, get_media_info=False): def get_metadata_children_details(self, rating_key='', get_children=False, get_media_info=False):
""" """
@ -904,14 +907,13 @@ class PmsConnect(object):
xml_head = metadata.getElementsByTagName('MediaContainer') xml_head = metadata.getElementsByTagName('MediaContainer')
except Exception as e: except Exception as e:
logger.warn(u"PlexPy Pmsconnect :: Unable to parse XML for get_metadata_children: %s." % e) logger.warn(u"PlexPy Pmsconnect :: Unable to parse XML for get_metadata_children: %s." % e)
return {'metadata': []} return []
metadata_list = [] metadata_list = []
for a in xml_head: for a in xml_head:
if a.getAttribute('size'): if a.getAttribute('size'):
if a.getAttribute('size') == '0': if a.getAttribute('size') == '0':
metadata_list = {'metadata': []}
return metadata_list return metadata_list
if a.getElementsByTagName('Video'): if a.getElementsByTagName('Video'):
@ -920,7 +922,7 @@ class PmsConnect(object):
child_rating_key = helpers.get_xml_attr(item, 'ratingKey') child_rating_key = helpers.get_xml_attr(item, 'ratingKey')
metadata = self.get_metadata_details(str(child_rating_key), get_media_info) metadata = self.get_metadata_details(str(child_rating_key), get_media_info)
if metadata: if metadata:
metadata_list.append(metadata['metadata']) metadata_list.append(metadata)
elif a.getElementsByTagName('Track'): elif a.getElementsByTagName('Track'):
metadata_main = a.getElementsByTagName('Track') metadata_main = a.getElementsByTagName('Track')
@ -928,7 +930,7 @@ class PmsConnect(object):
child_rating_key = helpers.get_xml_attr(item, 'ratingKey') child_rating_key = helpers.get_xml_attr(item, 'ratingKey')
metadata = self.get_metadata_details(str(child_rating_key), get_media_info) metadata = self.get_metadata_details(str(child_rating_key), get_media_info)
if metadata: if metadata:
metadata_list.append(metadata['metadata']) metadata_list.append(metadata)
elif get_children and a.getElementsByTagName('Directory'): elif get_children and a.getElementsByTagName('Directory'):
dir_main = a.getElementsByTagName('Directory') dir_main = a.getElementsByTagName('Directory')
@ -937,10 +939,9 @@ class PmsConnect(object):
child_rating_key = helpers.get_xml_attr(item, 'ratingKey') child_rating_key = helpers.get_xml_attr(item, 'ratingKey')
metadata = self.get_metadata_children_details(str(child_rating_key), get_children, get_media_info) metadata = self.get_metadata_children_details(str(child_rating_key), get_children, get_media_info)
if metadata: if metadata:
metadata_list.extend(metadata['metadata']) metadata_list.extend(metadata)
output = {'metadata': metadata_list} return metadata_list
return output
def get_library_metadata_details(self, section_id=''): def get_library_metadata_details(self, section_id=''):
""" """
@ -2011,10 +2012,10 @@ class PmsConnect(object):
for result in result_data: for result in result_data:
rating_key = helpers.get_xml_attr(result, 'ratingKey') rating_key = helpers.get_xml_attr(result, 'ratingKey')
metadata = self.get_metadata_details(rating_key=rating_key) metadata = self.get_metadata_details(rating_key=rating_key)
if metadata['metadata']['media_type'] == 'movie': if metadata['media_type'] == 'movie':
search_results_list['movie'].append(metadata['metadata']) search_results_list['movie'].append(metadata)
elif metadata['metadata']['media_type'] == 'episode': elif metadata['media_type'] == 'episode':
search_results_list['episode'].append(metadata['metadata']) search_results_list['episode'].append(metadata)
search_results_count += 1 search_results_count += 1
if a.getElementsByTagName('Directory'): if a.getElementsByTagName('Directory'):
@ -2022,22 +2023,22 @@ class PmsConnect(object):
for result in result_data: for result in result_data:
rating_key = helpers.get_xml_attr(result, 'ratingKey') rating_key = helpers.get_xml_attr(result, 'ratingKey')
metadata = self.get_metadata_details(rating_key=rating_key) metadata = self.get_metadata_details(rating_key=rating_key)
if metadata['metadata']['media_type'] == 'show': if metadata['media_type'] == 'show':
search_results_list['show'].append(metadata['metadata']) search_results_list['show'].append(metadata)
show_seasons = self.get_item_children(rating_key=metadata['metadata']['rating_key']) show_seasons = self.get_item_children(rating_key=metadata['rating_key'])
if show_seasons['children_count'] != '0': if show_seasons['children_count'] != '0':
for season in show_seasons['children_list']: for season in show_seasons['children_list']:
if season['rating_key']: if season['rating_key']:
rating_key = season['rating_key'] rating_key = season['rating_key']
metadata = self.get_metadata_details(rating_key=rating_key) metadata = self.get_metadata_details(rating_key=rating_key)
search_results_list['season'].append(metadata['metadata']) search_results_list['season'].append(metadata)
search_results_count += 1 search_results_count += 1
elif metadata['metadata']['media_type'] == 'artist': elif metadata['media_type'] == 'artist':
search_results_list['artist'].append(metadata['metadata']) search_results_list['artist'].append(metadata)
elif metadata['metadata']['media_type'] == 'album': elif metadata['media_type'] == 'album':
search_results_list['album'].append(metadata['metadata']) search_results_list['album'].append(metadata)
search_results_count += 1 search_results_count += 1
if a.getElementsByTagName('Track'): if a.getElementsByTagName('Track'):
@ -2045,7 +2046,7 @@ class PmsConnect(object):
for result in result_data: for result in result_data:
rating_key = helpers.get_xml_attr(result, 'ratingKey') rating_key = helpers.get_xml_attr(result, 'ratingKey')
metadata = self.get_metadata_details(rating_key=rating_key) metadata = self.get_metadata_details(rating_key=rating_key)
search_results_list['track'].append(metadata['metadata']) search_results_list['track'].append(metadata)
search_results_count += 1 search_results_count += 1
output = {'results_count': search_results_count, output = {'results_count': search_results_count,
@ -2077,9 +2078,9 @@ class PmsConnect(object):
if media_type == 'season' or media_type == 'album': if media_type == 'season' or media_type == 'album':
try: try:
metadata = self.get_metadata_details(rating_key=rating_key) metadata = self.get_metadata_details(rating_key=rating_key)
rating_key = metadata['metadata']['parent_rating_key'] rating_key = metadata['parent_rating_key']
section_id = metadata['metadata']['section_id'] section_id = metadata['section_id']
library_name = metadata['metadata']['library_name'] library_name = metadata['library_name']
except Exception as e: except Exception as e:
logger.warn(u"PlexPy Pmsconnect :: Unable to get parent_rating_key for get_rating_keys_list: %s." % e) logger.warn(u"PlexPy Pmsconnect :: Unable to get parent_rating_key for get_rating_keys_list: %s." % e)
return {} return {}
@ -2087,9 +2088,9 @@ class PmsConnect(object):
elif media_type == 'episode' or media_type == 'track': elif media_type == 'episode' or media_type == 'track':
try: try:
metadata = self.get_metadata_details(rating_key=rating_key) metadata = self.get_metadata_details(rating_key=rating_key)
rating_key = metadata['metadata']['grandparent_rating_key'] rating_key = metadata['grandparent_rating_key']
section_id = metadata['metadata']['section_id'] section_id = metadata['section_id']
library_name = metadata['metadata']['library_name'] library_name = metadata['library_name']
except Exception as e: except Exception as e:
logger.warn(u"PlexPy Pmsconnect :: Unable to get grandparent_rating_key for get_rating_keys_list: %s." % e) logger.warn(u"PlexPy Pmsconnect :: Unable to get grandparent_rating_key for get_rating_keys_list: %s." % e)
return {} return {}

View file

@ -3381,16 +3381,14 @@ class WebInterface(object):
if source == 'history': if source == 'history':
data_factory = datafactory.DataFactory() data_factory = datafactory.DataFactory()
result = data_factory.get_metadata_details(rating_key=rating_key) metadata = data_factory.get_metadata_details(rating_key=rating_key)
if result and result['metadata']: if metadata:
metadata = result['metadata']
poster_url = data_factory.get_poster_url(metadata=metadata) poster_url = data_factory.get_poster_url(metadata=metadata)
metadata['poster_url'] = poster_url metadata['poster_url'] = poster_url
else: else:
pms_connect = pmsconnect.PmsConnect() pms_connect = pmsconnect.PmsConnect()
result = pms_connect.get_metadata_details(rating_key=rating_key, get_media_info=True) metadata = pms_connect.get_metadata_details(rating_key=rating_key, get_media_info=True)
if result and result['metadata']: if metadata:
metadata = result['metadata']
data_factory = datafactory.DataFactory() data_factory = datafactory.DataFactory()
poster_url = data_factory.get_poster_url(metadata=metadata) poster_url = data_factory.get_poster_url(metadata=metadata)
metadata['poster_url'] = poster_url metadata['poster_url'] = poster_url
@ -3809,63 +3807,61 @@ class WebInterface(object):
Returns: Returns:
json: json:
{"metadata": {"actors": [
{"actors": [ "Kit Harington",
"Kit Harington", "Emilia Clarke",
"Emilia Clarke", "Isaac Hempstead-Wright",
"Isaac Hempstead-Wright", "Maisie Williams",
"Maisie Williams", "Liam Cunningham",
"Liam Cunningham", ],
], "added_at": "1461572396",
"added_at": "1461572396", "art": "/library/metadata/1219/art/1462175063",
"art": "/library/metadata/1219/art/1462175063", "content_rating": "TV-MA",
"content_rating": "TV-MA", "directors": [
"directors": [ "Jeremy Podeswa"
"Jeremy Podeswa" ],
], "duration": "2998290",
"duration": "2998290", "genres": [
"genres": [ "Adventure",
"Adventure", "Drama",
"Drama", "Fantasy"
"Fantasy" ],
], "grandparent_rating_key": "1219",
"grandparent_rating_key": "1219", "grandparent_thumb": "/library/metadata/1219/thumb/1462175063",
"grandparent_thumb": "/library/metadata/1219/thumb/1462175063", "grandparent_title": "Game of Thrones",
"grandparent_title": "Game of Thrones", "guid": "com.plexapp.agents.thetvdb://121361/6/1?lang=en",
"guid": "com.plexapp.agents.thetvdb://121361/6/1?lang=en", "labels": [],
"labels": [], "last_viewed_at": "1462165717",
"last_viewed_at": "1462165717", "library_name": "TV Shows",
"library_name": "TV Shows", "media_index": "1",
"media_index": "1", "media_type": "episode",
"media_type": "episode", "originally_available_at": "2016-04-24",
"originally_available_at": "2016-04-24", "parent_media_index": "6",
"parent_media_index": "6", "parent_rating_key": "153036",
"parent_rating_key": "153036", "parent_thumb": "/library/metadata/153036/thumb/1462175062",
"parent_thumb": "/library/metadata/153036/thumb/1462175062", "parent_title": "",
"parent_title": "", "rating": "7.8",
"rating": "7.8", "rating_key": "153037",
"rating_key": "153037", "section_id": "2",
"section_id": "2", "studio": "HBO",
"studio": "HBO", "summary": "Jon Snow is dead. Daenerys meets a strong man. Cersei sees her daughter again.",
"summary": "Jon Snow is dead. Daenerys meets a strong man. Cersei sees her daughter again.", "tagline": "",
"tagline": "", "thumb": "/library/metadata/153037/thumb/1462175060",
"thumb": "/library/metadata/153037/thumb/1462175060", "title": "The Red Woman",
"title": "The Red Woman", "updated_at": "1462175060",
"updated_at": "1462175060", "writers": [
"writers": [ "David Benioff",
"David Benioff", "D. B. Weiss"
"D. B. Weiss" ],
], "year": "2016"
"year": "2016"
}
} }
``` ```
""" """
pms_connect = pmsconnect.PmsConnect() pms_connect = pmsconnect.PmsConnect()
result = pms_connect.get_metadata_details(rating_key=rating_key, get_media_info=media_info) metadata = pms_connect.get_metadata_details(rating_key=rating_key, get_media_info=media_info)
if result: if metadata:
return result return metadata
else: else:
logger.warn(u"Unable to retrieve data for get_metadata_details.") logger.warn(u"Unable to retrieve data for get_metadata_details.")