Add playlist info page

This commit is contained in:
JonnyWong16 2020-09-30 14:00:57 -07:00
commit b568af0a90
No known key found for this signature in database
GPG key ID: B1F1F9807184697A
8 changed files with 168 additions and 62 deletions

View file

@ -173,6 +173,22 @@ class PmsConnect(object):
return request
def get_playlist_items(self, rating_key='', output_format=''):
"""
Return metadata for items of the requested playlist.
Parameters required: rating_key { Plex ratingKey }
Optional parameters: output_format { dict, json }
Output: array
"""
uri = '/playlists/' + rating_key + '/items'
request = self.request_handler.make_request(uri=uri,
request_type='GET',
output_format=output_format)
return request
def get_recently_added(self, start='0', count='0', output_format=''):
"""
Return list of recently added items.
@ -654,6 +670,8 @@ class PmsConnect(object):
metadata_main_list = a.getElementsByTagName('Track')
elif a.getElementsByTagName('Photo'):
metadata_main_list = a.getElementsByTagName('Photo')
elif a.getElementsByTagName('Playlist'):
metadata_main_list = a.getElementsByTagName('Playlist')
else:
logger.debug("Tautulli Pmsconnect :: Metadata failed")
return {}
@ -1251,6 +1269,26 @@ class PmsConnect(object):
'live': int(helpers.get_xml_attr(metadata_main, 'live') == '1')
}
elif metadata_type == 'playlist':
metadata = {'media_type': metadata_type,
'section_id': section_id,
'library_name': library_name,
'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'),
'guid': helpers.get_xml_attr(metadata_main, 'guid'),
'title': helpers.get_xml_attr(metadata_main, 'title'),
'summary': helpers.get_xml_attr(metadata_main, 'summary'),
'duration': helpers.get_xml_attr(metadata_main, 'duration'),
'composite': helpers.get_xml_attr(metadata_main, 'composite'),
'thumb': helpers.get_xml_attr(metadata_main, 'composite'),
'added_at': helpers.get_xml_attr(metadata_main, 'addedAt'),
'updated_at': helpers.get_xml_attr(metadata_main, 'updatedAt'),
'last_viewed_at': helpers.get_xml_attr(metadata_main, 'lastViewedAt'),
'children_count': helpers.cast_to_int(helpers.get_xml_attr(metadata_main, 'leafCount')),
'smart': helpers.cast_to_int(helpers.get_xml_attr(metadata_main, 'smart')),
'playlist_type': helpers.get_xml_attr(metadata_main, 'playlistType'),
'live': int(helpers.get_xml_attr(metadata_main, 'live') == '1')
}
elif metadata_type == 'clip':
metadata = {'media_type': metadata_type,
'section_id': section_id,
@ -2241,13 +2279,15 @@ class PmsConnect(object):
logger.warn("Tautulli Pmsconnect :: Failed to terminate session: %s." % msg)
return msg
def get_item_children(self, rating_key='', get_grandchildren=False):
def get_item_children(self, rating_key='', media_type=None, get_grandchildren=False):
"""
Return processed and validated children list.
Output: array
"""
if get_grandchildren:
if media_type == 'playlist':
children_data = self.get_playlist_items(rating_key, output_format='xml')
elif get_grandchildren:
children_data = self.get_metadata_grandchildren(rating_key, output_format='xml')
else:
children_data = self.get_metadata_children(rating_key, output_format='xml')

View file

@ -4341,13 +4341,14 @@ class WebInterface(object):
@cherrypy.expose
@requireAuth()
def get_item_children(self, rating_key='', **kwargs):
def get_item_children(self, rating_key='', media_type=None, **kwargs):
pms_connect = pmsconnect.PmsConnect()
result = pms_connect.get_item_children(rating_key=rating_key)
result = pms_connect.get_item_children(rating_key=rating_key, media_type=media_type)
if result:
return serve_template(templatename="info_children_list.html", data=result, title="Children List")
return serve_template(templatename="info_children_list.html", data=result,
media_type=media_type, title="Children List")
else:
logger.warn("Unable to retrieve data for get_item_children.")
return serve_template(templatename="info_children_list.html", data=None, title="Children List")