From 6d0327f6620fe72959ec270ad7c71af46c959596 Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Thu, 13 Oct 2016 20:52:50 -0700 Subject: [PATCH] Don't nest metadata dict * Return metadata dict directly --- API.md | 96 ++++++++++++++-------------- plexpy/activity_handler.py | 11 ++-- plexpy/activity_pinger.py | 18 +++--- plexpy/activity_processor.py | 6 +- plexpy/datafactory.py | 20 +++--- plexpy/libraries.py | 5 +- plexpy/notification_handler.py | 10 ++- plexpy/pmsconnect.py | 107 +++++++++++++++---------------- plexpy/webserve.py | 112 ++++++++++++++++----------------- 9 files changed, 187 insertions(+), 198 deletions(-) diff --git a/API.md b/API.md index d6ef4b58..c07b6b51 100644 --- a/API.md +++ b/API.md @@ -783,55 +783,53 @@ Optional parameters: Returns: json: - {"metadata": - {"actors": [ - "Kit Harington", - "Emilia Clarke", - "Isaac Hempstead-Wright", - "Maisie Williams", - "Liam Cunningham", - ], - "added_at": "1461572396", - "art": "/library/metadata/1219/art/1462175063", - "content_rating": "TV-MA", - "directors": [ - "Jeremy Podeswa" - ], - "duration": "2998290", - "genres": [ - "Adventure", - "Drama", - "Fantasy" - ], - "grandparent_rating_key": "1219", - "grandparent_thumb": "/library/metadata/1219/thumb/1462175063", - "grandparent_title": "Game of Thrones", - "guid": "com.plexapp.agents.thetvdb://121361/6/1?lang=en", - "labels": [], - "last_viewed_at": "1462165717", - "library_name": "TV Shows", - "media_index": "1", - "media_type": "episode", - "originally_available_at": "2016-04-24", - "parent_media_index": "6", - "parent_rating_key": "153036", - "parent_thumb": "/library/metadata/153036/thumb/1462175062", - "parent_title": "", - "rating": "7.8", - "rating_key": "153037", - "section_id": "2", - "studio": "HBO", - "summary": "Jon Snow is dead. Daenerys meets a strong man. Cersei sees her daughter again.", - "tagline": "", - "thumb": "/library/metadata/153037/thumb/1462175060", - "title": "The Red Woman", - "updated_at": "1462175060", - "writers": [ - "David Benioff", - "D. B. Weiss" - ], - "year": "2016" - } + {"actors": [ + "Kit Harington", + "Emilia Clarke", + "Isaac Hempstead-Wright", + "Maisie Williams", + "Liam Cunningham", + ], + "added_at": "1461572396", + "art": "/library/metadata/1219/art/1462175063", + "content_rating": "TV-MA", + "directors": [ + "Jeremy Podeswa" + ], + "duration": "2998290", + "genres": [ + "Adventure", + "Drama", + "Fantasy" + ], + "grandparent_rating_key": "1219", + "grandparent_thumb": "/library/metadata/1219/thumb/1462175063", + "grandparent_title": "Game of Thrones", + "guid": "com.plexapp.agents.thetvdb://121361/6/1?lang=en", + "labels": [], + "last_viewed_at": "1462165717", + "library_name": "TV Shows", + "media_index": "1", + "media_type": "episode", + "originally_available_at": "2016-04-24", + "parent_media_index": "6", + "parent_rating_key": "153036", + "parent_thumb": "/library/metadata/153036/thumb/1462175062", + "parent_title": "", + "rating": "7.8", + "rating_key": "153037", + "section_id": "2", + "studio": "HBO", + "summary": "Jon Snow is dead. Daenerys meets a strong man. Cersei sees her daughter again.", + "tagline": "", + "thumb": "/library/metadata/153037/thumb/1462175060", + "title": "The Red Woman", + "updated_at": "1462175060", + "writers": [ + "David Benioff", + "D. B. Weiss" + ], + "year": "2016" } ``` diff --git a/plexpy/activity_handler.py b/plexpy/activity_handler.py index ceb75aae..9bc65211 100644 --- a/plexpy/activity_handler.py +++ b/plexpy/activity_handler.py @@ -249,10 +249,10 @@ class TimelineHandler(object): def get_metadata(self): 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: - return metadata_list['metadata'] + if metadata: + return metadata return None @@ -260,10 +260,9 @@ class TimelineHandler(object): if self.is_item(): logger.debug(u"PlexPy TimelineHandler :: Library item %s added to Plex." % str(rating_key)) pms_connect = pmsconnect.PmsConnect() - metadata_list = pms_connect.get_metadata_details(rating_key) + metadata = pms_connect.get_metadata_details(rating_key) - if metadata_list: - metadata = metadata_list['metadata'] + if metadata: data = {'timeline_data': metadata, 'notify_action': 'on_created'} data.update(kwargs) plexpy.NOTIFY_QUEUE.put(data) diff --git a/plexpy/activity_pinger.py b/plexpy/activity_pinger.py index c2bcd006..1e221b4f 100644 --- a/plexpy/activity_pinger.py +++ b/plexpy/activity_pinger.py @@ -221,18 +221,16 @@ def check_recently_added(): if 0 < time_threshold - int(item['added_at']) <= time_interval: if item['media_type'] == 'movie': - metadata_list = pms_connect.get_metadata_details(item['rating_key']) - if metadata_list: - metadata = [metadata_list['metadata']] + metadata = pms_connect.get_metadata_details(item['rating_key']) + if metadata: + metadata = [metadata] else: logger.error(u"PlexPy Monitor :: Unable to retrieve metadata for rating_key %s" \ % str(item['rating_key'])) else: - metadata_list = pms_connect.get_metadata_children_details(item['rating_key']) - if metadata_list: - metadata = metadata_list['metadata'] - else: + metadata = pms_connect.get_metadata_children_details(item['rating_key']) + if not metadata: logger.error(u"PlexPy Monitor :: Unable to retrieve children metadata for rating_key %s" \ % str(item['rating_key'])) @@ -253,10 +251,10 @@ def check_recently_added(): if 0 < time_threshold - int(item['added_at']) <= time_interval: 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: - item = metadata_list['metadata'] + if metadata: + item = metadata else: logger.error(u"PlexPy Monitor :: Unable to retrieve grandparent metadata for grandparent_rating_key %s" \ % str(item['rating_key'])) diff --git a/plexpy/activity_processor.py b/plexpy/activity_processor.py index 36972480..1ce4fcfd 100644 --- a/plexpy/activity_processor.py +++ b/plexpy/activity_processor.py @@ -194,10 +194,8 @@ class ActivityProcessor(object): if not is_import: logger.debug(u"PlexPy ActivityProcessor :: Fetching metadata for item ratingKey %s" % session['rating_key']) pms_connect = pmsconnect.PmsConnect() - result = pms_connect.get_metadata_details(rating_key=str(session['rating_key'])) - if result and result['metadata']: - metadata = result['metadata'] - else: + metadata = pms_connect.get_metadata_details(rating_key=str(session['rating_key'])) + if not metadata: return False else: metadata = import_metadata diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py index 649b8f8b..27d10099 100644 --- a/plexpy/datafactory.py +++ b/plexpy/datafactory.py @@ -875,7 +875,8 @@ class DataFactory(object): monitor_db = database.MonitorDatabase() 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.parent_title, session_history_metadata.grandparent_title, ' \ 'session_history_metadata.full_title, library_sections.section_name, ' \ @@ -897,7 +898,9 @@ class DataFactory(object): 'FROM session_history_metadata ' \ '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 ' \ - '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]) else: result = [] @@ -953,10 +956,10 @@ class DataFactory(object): } metadata_list.append(metadata) - metadata = session.filter_session_info(metadata_list, filter_key='section_id') - - if metadata: - return {'metadata': session.filter_session_info(metadata_list, filter_key='section_id')[0]} + filtered_metadata_list = session.filter_session_info(metadata_list, filter_key='section_id') + + if filtered_metadata_list: + return filtered_metadata_list[0] else: return [] @@ -1225,10 +1228,9 @@ class DataFactory(object): if mapping: logger.info(u"PlexPy DataFactory :: Updating metadata in the database.") 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: - metadata = result['metadata'] + if metadata: if metadata['media_type'] == 'show' or metadata['media_type'] == 'artist': # check grandparent_rating_key (2 tables) monitor_db.action('UPDATE session_history SET grandparent_rating_key = ? WHERE grandparent_rating_key = ?', diff --git a/plexpy/libraries.py b/plexpy/libraries.py index 649d454a..e528c65a 100644 --- a/plexpy/libraries.py +++ b/plexpy/libraries.py @@ -560,12 +560,11 @@ class Libraries(object): if item['rating_key'] and not item['file_size']: 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_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)) item['file_size'] = file_size diff --git a/plexpy/notification_handler.py b/plexpy/notification_handler.py index a86e1aa2..9e2c7723 100644 --- a/plexpy/notification_handler.py +++ b/plexpy/notification_handler.py @@ -259,19 +259,17 @@ def build_media_notify_params(notify_action=None, session=None, timeline=None, * rating_key = timeline['rating_key'] 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: - metadata = metadata_list['metadata'] - else: + if not metadata: logger.error(u"PlexPy NotificationHandler :: Unable to retrieve metadata for rating_key %s" % str(rating_key)) return None, None child_metadata = grandchild_metadata = [] 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', []): - 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() sessions = current_activity.get('sessions', []) diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py index dbe88557..16176e79 100644 --- a/plexpy/pmsconnect.py +++ b/plexpy/pmsconnect.py @@ -577,7 +577,7 @@ class PmsConnect(object): metadata_type = helpers.get_xml_attr(metadata_main, 'type') else: logger.debug(u"PlexPy Pmsconnect :: Metadata failed") - return None + return [] section_id = helpers.get_xml_attr(a, 'librarySectionID') library_name = helpers.get_xml_attr(a, 'librarySectionTitle') @@ -642,7 +642,7 @@ class PmsConnect(object): 'genres': genres, 'labels': labels } - metadata_list = {'metadata': metadata} + metadata_list.append(metadata) elif metadata_type == 'show': metadata = {'media_type': metadata_type, @@ -678,7 +678,7 @@ class PmsConnect(object): 'genres': genres, 'labels': labels } - metadata_list = {'metadata': metadata} + metadata_list.append(metadata) elif metadata_type == 'season': 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'), 'media_index': helpers.get_xml_attr(metadata_main, 'index'), 'parent_media_index': helpers.get_xml_attr(metadata_main, 'parentIndex'), - 'studio': show_details['metadata']['studio'], - 'content_rating': show_details['metadata']['content_rating'], - 'summary': show_details['metadata']['summary'], + 'studio': show_details['studio'], + 'content_rating': show_details['content_rating'], + 'summary': show_details['summary'], 'tagline': helpers.get_xml_attr(metadata_main, 'tagline'), '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'), 'thumb': helpers.get_xml_attr(metadata_main, 'thumb'), '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'), 'last_viewed_at': helpers.get_xml_attr(metadata_main, 'lastViewedAt'), 'guid': helpers.get_xml_attr(metadata_main, 'guid'), - 'directors': show_details['metadata']['directors'], - 'writers': show_details['metadata']['writers'], - 'actors': show_details['metadata']['actors'], - 'genres': show_details['metadata']['genres'], - 'labels': show_details['metadata']['labels'] + 'directors': show_details['directors'], + 'writers': show_details['writers'], + 'actors': show_details['actors'], + 'genres': show_details['genres'], + 'labels': show_details['labels'] } - metadata_list = {'metadata': metadata} + metadata_list.append(metadata) elif metadata_type == 'episode': 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'), 'media_index': helpers.get_xml_attr(metadata_main, 'index'), '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'), 'summary': helpers.get_xml_attr(metadata_main, 'summary'), 'tagline': helpers.get_xml_attr(metadata_main, 'tagline'), @@ -750,11 +750,11 @@ class PmsConnect(object): 'guid': helpers.get_xml_attr(metadata_main, 'guid'), 'directors': directors, 'writers': writers, - 'actors': show_details['metadata']['actors'], - 'genres': show_details['metadata']['genres'], - 'labels': show_details['metadata']['labels'] + 'actors': show_details['actors'], + 'genres': show_details['genres'], + 'labels': show_details['labels'] } - metadata_list = {'metadata': metadata} + metadata_list.append(metadata) elif metadata_type == 'artist': metadata = {'media_type': metadata_type, @@ -790,7 +790,7 @@ class PmsConnect(object): 'genres': genres, 'labels': labels } - metadata_list = {'metadata': metadata} + metadata_list.append(metadata) elif metadata_type == 'album': 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'), 'studio': helpers.get_xml_attr(metadata_main, 'studio'), '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'), 'rating': helpers.get_xml_attr(metadata_main, 'rating'), 'duration': helpers.get_xml_attr(metadata_main, 'duration'), @@ -828,7 +828,7 @@ class PmsConnect(object): 'genres': genres, 'labels': labels } - metadata_list = {'metadata': metadata} + metadata_list.append(metadata) elif metadata_type == 'track': 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'), 'rating': helpers.get_xml_attr(metadata_main, 'rating'), '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'), 'parent_thumb': helpers.get_xml_attr(metadata_main, 'parentThumb'), 'grandparent_thumb': helpers.get_xml_attr(metadata_main, 'grandparentThumb'), @@ -863,13 +863,13 @@ class PmsConnect(object): 'directors': directors, 'writers': writers, 'actors': actors, - 'genres': album_details['metadata']['genres'], - 'labels': album_details['metadata']['labels'] + 'genres': album_details['genres'], + 'labels': album_details['labels'] } - metadata_list = {'metadata': metadata} + metadata_list.append(metadata) else: - return None + return [] if get_media_info and metadata_main.getElementsByTagName('Media'): item_media = metadata_main.getElementsByTagName('Media')[0] @@ -888,7 +888,10 @@ class PmsConnect(object): } 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): """ @@ -904,14 +907,13 @@ class PmsConnect(object): xml_head = metadata.getElementsByTagName('MediaContainer') except Exception as e: logger.warn(u"PlexPy Pmsconnect :: Unable to parse XML for get_metadata_children: %s." % e) - return {'metadata': []} + return [] metadata_list = [] for a in xml_head: if a.getAttribute('size'): if a.getAttribute('size') == '0': - metadata_list = {'metadata': []} return metadata_list if a.getElementsByTagName('Video'): @@ -920,7 +922,7 @@ class PmsConnect(object): child_rating_key = helpers.get_xml_attr(item, 'ratingKey') metadata = self.get_metadata_details(str(child_rating_key), get_media_info) if metadata: - metadata_list.append(metadata['metadata']) + metadata_list.append(metadata) elif a.getElementsByTagName('Track'): metadata_main = a.getElementsByTagName('Track') @@ -928,7 +930,7 @@ class PmsConnect(object): child_rating_key = helpers.get_xml_attr(item, 'ratingKey') metadata = self.get_metadata_details(str(child_rating_key), get_media_info) if metadata: - metadata_list.append(metadata['metadata']) + metadata_list.append(metadata) elif get_children and a.getElementsByTagName('Directory'): dir_main = a.getElementsByTagName('Directory') @@ -937,10 +939,9 @@ class PmsConnect(object): child_rating_key = helpers.get_xml_attr(item, 'ratingKey') metadata = self.get_metadata_children_details(str(child_rating_key), get_children, get_media_info) if metadata: - metadata_list.extend(metadata['metadata']) + metadata_list.extend(metadata) - output = {'metadata': metadata_list} - return output + return metadata_list def get_library_metadata_details(self, section_id=''): """ @@ -2011,10 +2012,10 @@ 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) - if metadata['metadata']['media_type'] == 'movie': - search_results_list['movie'].append(metadata['metadata']) - elif metadata['metadata']['media_type'] == 'episode': - search_results_list['episode'].append(metadata['metadata']) + if metadata['media_type'] == 'movie': + search_results_list['movie'].append(metadata) + elif metadata['media_type'] == 'episode': + search_results_list['episode'].append(metadata) search_results_count += 1 if a.getElementsByTagName('Directory'): @@ -2022,22 +2023,22 @@ 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) - if metadata['metadata']['media_type'] == 'show': - search_results_list['show'].append(metadata['metadata']) + if metadata['media_type'] == 'show': + 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': for season in show_seasons['children_list']: if season['rating_key']: rating_key = season['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 - elif metadata['metadata']['media_type'] == 'artist': - search_results_list['artist'].append(metadata['metadata']) - elif metadata['metadata']['media_type'] == 'album': - search_results_list['album'].append(metadata['metadata']) + elif metadata['media_type'] == 'artist': + search_results_list['artist'].append(metadata) + elif metadata['media_type'] == 'album': + search_results_list['album'].append(metadata) search_results_count += 1 if a.getElementsByTagName('Track'): @@ -2045,7 +2046,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['track'].append(metadata['metadata']) + search_results_list['track'].append(metadata) search_results_count += 1 output = {'results_count': search_results_count, @@ -2077,9 +2078,9 @@ class PmsConnect(object): if media_type == 'season' or media_type == 'album': try: metadata = self.get_metadata_details(rating_key=rating_key) - rating_key = metadata['metadata']['parent_rating_key'] - section_id = metadata['metadata']['section_id'] - library_name = metadata['metadata']['library_name'] + rating_key = metadata['parent_rating_key'] + section_id = metadata['section_id'] + library_name = metadata['library_name'] except Exception as e: logger.warn(u"PlexPy Pmsconnect :: Unable to get parent_rating_key for get_rating_keys_list: %s." % e) return {} @@ -2087,9 +2088,9 @@ class PmsConnect(object): elif media_type == 'episode' or media_type == 'track': try: metadata = self.get_metadata_details(rating_key=rating_key) - rating_key = metadata['metadata']['grandparent_rating_key'] - section_id = metadata['metadata']['section_id'] - library_name = metadata['metadata']['library_name'] + rating_key = metadata['grandparent_rating_key'] + section_id = metadata['section_id'] + library_name = metadata['library_name'] except Exception as e: logger.warn(u"PlexPy Pmsconnect :: Unable to get grandparent_rating_key for get_rating_keys_list: %s." % e) return {} diff --git a/plexpy/webserve.py b/plexpy/webserve.py index d3683b41..ac6c6aa9 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -3381,16 +3381,14 @@ class WebInterface(object): if source == 'history': data_factory = datafactory.DataFactory() - result = data_factory.get_metadata_details(rating_key=rating_key) - if result and result['metadata']: - metadata = result['metadata'] + metadata = data_factory.get_metadata_details(rating_key=rating_key) + if metadata: poster_url = data_factory.get_poster_url(metadata=metadata) metadata['poster_url'] = poster_url else: pms_connect = pmsconnect.PmsConnect() - result = pms_connect.get_metadata_details(rating_key=rating_key, get_media_info=True) - if result and result['metadata']: - metadata = result['metadata'] + metadata = pms_connect.get_metadata_details(rating_key=rating_key, get_media_info=True) + if metadata: data_factory = datafactory.DataFactory() poster_url = data_factory.get_poster_url(metadata=metadata) metadata['poster_url'] = poster_url @@ -3809,63 +3807,61 @@ class WebInterface(object): Returns: json: - {"metadata": - {"actors": [ - "Kit Harington", - "Emilia Clarke", - "Isaac Hempstead-Wright", - "Maisie Williams", - "Liam Cunningham", - ], - "added_at": "1461572396", - "art": "/library/metadata/1219/art/1462175063", - "content_rating": "TV-MA", - "directors": [ - "Jeremy Podeswa" - ], - "duration": "2998290", - "genres": [ - "Adventure", - "Drama", - "Fantasy" - ], - "grandparent_rating_key": "1219", - "grandparent_thumb": "/library/metadata/1219/thumb/1462175063", - "grandparent_title": "Game of Thrones", - "guid": "com.plexapp.agents.thetvdb://121361/6/1?lang=en", - "labels": [], - "last_viewed_at": "1462165717", - "library_name": "TV Shows", - "media_index": "1", - "media_type": "episode", - "originally_available_at": "2016-04-24", - "parent_media_index": "6", - "parent_rating_key": "153036", - "parent_thumb": "/library/metadata/153036/thumb/1462175062", - "parent_title": "", - "rating": "7.8", - "rating_key": "153037", - "section_id": "2", - "studio": "HBO", - "summary": "Jon Snow is dead. Daenerys meets a strong man. Cersei sees her daughter again.", - "tagline": "", - "thumb": "/library/metadata/153037/thumb/1462175060", - "title": "The Red Woman", - "updated_at": "1462175060", - "writers": [ - "David Benioff", - "D. B. Weiss" - ], - "year": "2016" - } + {"actors": [ + "Kit Harington", + "Emilia Clarke", + "Isaac Hempstead-Wright", + "Maisie Williams", + "Liam Cunningham", + ], + "added_at": "1461572396", + "art": "/library/metadata/1219/art/1462175063", + "content_rating": "TV-MA", + "directors": [ + "Jeremy Podeswa" + ], + "duration": "2998290", + "genres": [ + "Adventure", + "Drama", + "Fantasy" + ], + "grandparent_rating_key": "1219", + "grandparent_thumb": "/library/metadata/1219/thumb/1462175063", + "grandparent_title": "Game of Thrones", + "guid": "com.plexapp.agents.thetvdb://121361/6/1?lang=en", + "labels": [], + "last_viewed_at": "1462165717", + "library_name": "TV Shows", + "media_index": "1", + "media_type": "episode", + "originally_available_at": "2016-04-24", + "parent_media_index": "6", + "parent_rating_key": "153036", + "parent_thumb": "/library/metadata/153036/thumb/1462175062", + "parent_title": "", + "rating": "7.8", + "rating_key": "153037", + "section_id": "2", + "studio": "HBO", + "summary": "Jon Snow is dead. Daenerys meets a strong man. Cersei sees her daughter again.", + "tagline": "", + "thumb": "/library/metadata/153037/thumb/1462175060", + "title": "The Red Woman", + "updated_at": "1462175060", + "writers": [ + "David Benioff", + "D. B. Weiss" + ], + "year": "2016" } ``` """ 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: - return result + if metadata: + return metadata else: logger.warn(u"Unable to retrieve data for get_metadata_details.")