mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-08-19 21:03:21 -07:00
Add playlist info page
This commit is contained in:
parent
11f2f8ff81
commit
b568af0a90
8 changed files with 168 additions and 62 deletions
|
@ -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')
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue