% if library['type'] != 'photo':
% else:
${library['rows']['title']}
diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py
index 5a3685aa..a0b834a1 100644
--- a/plexpy/pmsconnect.py
+++ b/plexpy/pmsconnect.py
@@ -612,6 +612,53 @@ class PmsConnect(object):
return metadata_list
+ """
+ Return processed and validated metadata list for requested library.
+
+ Parameters required: library_id { Plex library key }
+
+ Output: array
+ """
+ def get_library_metadata_details(self, library_id=''):
+ libraries_data = self.get_libraries_list(output_format='xml')
+
+ try:
+ xml_head = libraries_data.getElementsByTagName('MediaContainer')
+ except:
+ logger.warn("Unable to parse XML for get_library_metadata_details.")
+ return []
+
+ metadata_list = []
+
+ for a in xml_head:
+ if a.getAttribute('size'):
+ if a.getAttribute('size') == '0':
+ metadata_list = {'metadata': None}
+ return metadata_list
+
+ if a.getElementsByTagName('Directory'):
+ result_data = a.getElementsByTagName('Directory')
+ for result in result_data:
+ key = helpers.get_xml_attr(result, 'key')
+ if key == library_id:
+ metadata = {'type': 'library',
+ 'library_id': helpers.get_xml_attr(result, 'key'),
+ 'library': helpers.get_xml_attr(result, 'type'),
+ 'title': helpers.get_xml_attr(result, 'title'),
+ 'art': helpers.get_xml_attr(result, 'art'),
+ 'thumb': helpers.get_xml_attr(result, 'thumb')
+ }
+ if metadata['library'] == 'movie':
+ metadata['media_type'] = 'movie'
+ elif metadata['library'] == 'show':
+ metadata['media_type'] = 'episode'
+ elif metadata['library'] == 'artist':
+ metadata['media_type'] = 'track'
+
+ metadata_list = {'metadata': metadata}
+
+ return metadata_list
+
"""
Return processed and validated session list.
diff --git a/plexpy/webserve.py b/plexpy/webserve.py
index 3549089b..8d79489e 100644
--- a/plexpy/webserve.py
+++ b/plexpy/webserve.py
@@ -589,6 +589,9 @@ class WebInterface(object):
if 'reference_id' in kwargs:
reference_id = kwargs.get('reference_id', "")
custom_where.append(['session_history.reference_id', reference_id])
+ if 'library_id' in kwargs:
+ library_id = kwargs.get('library_id', "")
+ custom_where.append(['session_history_metadata.library_id', library_id])
if 'media_type' in kwargs:
media_type = kwargs.get('media_type', "")
if media_type != 'all':
@@ -766,7 +769,7 @@ class WebInterface(object):
return None
@cherrypy.expose
- def info(self, item_id=None, source=None, **kwargs):
+ def info(self, library_id=None, item_id=None, source=None, **kwargs):
metadata = None
query = None
@@ -777,12 +780,11 @@ class WebInterface(object):
if source == 'history':
data_factory = datafactory.DataFactory()
metadata = data_factory.get_metadata_details(row_id=item_id)
- elif item_id == 'movie':
- metadata = {'type': 'library', 'library': 'movie', 'media_type': 'movie', 'title': 'Movies'}
- elif item_id == 'show':
- metadata = {'type': 'library', 'library': 'show', 'media_type': 'episode', 'title': 'TV Shows'}
- elif item_id == 'artist':
- metadata = {'type': 'library', 'library': 'artist', 'media_type': 'track', 'title': 'Music'}
+ elif library_id:
+ pms_connect = pmsconnect.PmsConnect()
+ result = pms_connect.get_library_metadata_details(library_id=library_id)
+ if result:
+ metadata = result['metadata']
else:
pms_connect = pmsconnect.PmsConnect()
result = pms_connect.get_metadata_details(rating_key=item_id)