mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-08-22 06:13:25 -07:00
Add top level library to info pages
This commit is contained in:
parent
4c1392566b
commit
fca98e027d
4 changed files with 66 additions and 23 deletions
|
@ -69,37 +69,31 @@ DOCUMENTATION :: END
|
||||||
<div class="summary-navbar-list">
|
<div class="summary-navbar-list">
|
||||||
<ul class="list-unstyled breadcrumb">
|
<ul class="list-unstyled breadcrumb">
|
||||||
% if data['type'] == 'library':
|
% if data['type'] == 'library':
|
||||||
% if data['library'] == 'movie':
|
<li class="active">${data['title']}</li>
|
||||||
<li class="active">Movies</li>
|
|
||||||
% elif data['library'] == 'show':
|
|
||||||
<li class="active">TV Shows</li>
|
|
||||||
% elif data['library'] == 'artist':
|
|
||||||
<li class="active">Music</li>
|
|
||||||
% endif
|
|
||||||
% elif data['type'] == 'movie':
|
% elif data['type'] == 'movie':
|
||||||
<li><a href="info?item_id=movie">Movies</a></li>
|
<li><a href="info?library_id=${data['library_id']}">${data['library_title']}</a></li>
|
||||||
<li class="active">${data['title']}</li>
|
<li class="active">${data['title']}</li>
|
||||||
% elif data['type'] == 'show':
|
% elif data['type'] == 'show':
|
||||||
<li><a href="info?item_id=show">TV Shows</a></li>
|
<li><a href="info?library_id=${data['library_id']}">${data['library_title']}</a></li>
|
||||||
<li class="active">${data['title']}</li>
|
<li class="active">${data['title']}</li>
|
||||||
% elif data['type'] == 'season':
|
% elif data['type'] == 'season':
|
||||||
<li class="hidden-xs hidden-sm"><a href="info?item_id=show">TV Shows</a></li>
|
<li class="hidden-xs hidden-sm"><a href="info?library_id=${data['library_id']}">${data['library_title']}</a></li>
|
||||||
<li><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a></li>
|
<li><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a></li>
|
||||||
<li class="active">Season ${data['index']}</li>
|
<li class="active">Season ${data['index']}</li>
|
||||||
% elif data['type'] == 'episode':
|
% elif data['type'] == 'episode':
|
||||||
<li class="hidden-xs hidden-sm"><a href="info?item_id=show">TV Shows</a></li>
|
<li class="hidden-xs hidden-sm"><a href="info?library_id=${data['library_id']}">${data['library_title']}</a></li>
|
||||||
<li class="hidden-xs hidden-sm"><a href="info?item_id=${data['grandparent_rating_key']}">${data['grandparent_title']}</a></li>
|
<li class="hidden-xs hidden-sm"><a href="info?item_id=${data['grandparent_rating_key']}">${data['grandparent_title']}</a></li>
|
||||||
<li><a href="info?item_id=${data['parent_rating_key']}">Season ${data['parent_index']}</a></li>
|
<li><a href="info?item_id=${data['parent_rating_key']}">Season ${data['parent_index']}</a></li>
|
||||||
<li class="active">Episode ${data['index']} - ${data['title']}</li>
|
<li class="active">Episode ${data['index']} - ${data['title']}</li>
|
||||||
% elif data['type'] == 'artist':
|
% elif data['type'] == 'artist':
|
||||||
<li><a href="info?item_id=artist">Music</a></li>
|
<li><a href="info?library_id=${data['library_id']}">${data['library_title']}</a></li>
|
||||||
<li class="active">${data['title']}</li>
|
<li class="active">${data['title']}</li>
|
||||||
% elif data['type'] == 'album':
|
% elif data['type'] == 'album':
|
||||||
<li class="hidden-xs hidden-sm"><a href="info?item_id=artist">Music</a></li>
|
<li class="hidden-xs hidden-sm"><a href="info?library_id=${data['library_id']}">${data['library_title']}</a></li>
|
||||||
<li><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a></li>
|
<li><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a></li>
|
||||||
<li class="active">${data['title']}</li>
|
<li class="active">${data['title']}</li>
|
||||||
% elif data['type'] == 'track':
|
% elif data['type'] == 'track':
|
||||||
<li class="hidden-xs hidden-sm"><a href="info?item_id=artist">Music</a></li>
|
<li class="hidden-xs hidden-sm"><a href="info?library_id=${data['library_id']}">${data['library_title']}</a></li>
|
||||||
<li class="hidden-xs hidden-sm"><a href="info?item_id=${data['grandparent_rating_key']}">${data['grandparent_title']}</a></li>
|
<li class="hidden-xs hidden-sm"><a href="info?item_id=${data['grandparent_rating_key']}">${data['grandparent_title']}</a></li>
|
||||||
<li><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a></li>
|
<li><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a></li>
|
||||||
<li class="active">Track ${data['index']} - ${data['title']}</li>
|
<li class="active">Track ${data['index']} - ${data['title']}</li>
|
||||||
|
@ -507,7 +501,7 @@ DOCUMENTATION :: END
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: function ( d ) {
|
data: function ( d ) {
|
||||||
return { 'json_data': JSON.stringify( d ),
|
return { 'json_data': JSON.stringify( d ),
|
||||||
'media_type': "${data['media_type']}" };
|
'library_id': "${data['library_id']}" };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ DOCUMENTATION :: END
|
||||||
<div class="home-platforms-instance-name">
|
<div class="home-platforms-instance-name">
|
||||||
% if library['type'] != 'photo':
|
% if library['type'] != 'photo':
|
||||||
<h4>
|
<h4>
|
||||||
<a href="info?item_id=${library['type']}" title="${library['rows']['title']}">${library['rows']['title']}</a>
|
<a href="info?library_id=${library['rows']['key']}" title="${library['rows']['title']}">${library['rows']['title']}</a>
|
||||||
</h4>
|
</h4>
|
||||||
% else:
|
% else:
|
||||||
<h4>${library['rows']['title']}</h4>
|
<h4>${library['rows']['title']}</h4>
|
||||||
|
|
|
@ -612,6 +612,53 @@ class PmsConnect(object):
|
||||||
|
|
||||||
return metadata_list
|
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.
|
Return processed and validated session list.
|
||||||
|
|
||||||
|
|
|
@ -589,6 +589,9 @@ class WebInterface(object):
|
||||||
if 'reference_id' in kwargs:
|
if 'reference_id' in kwargs:
|
||||||
reference_id = kwargs.get('reference_id', "")
|
reference_id = kwargs.get('reference_id', "")
|
||||||
custom_where.append(['session_history.reference_id', 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:
|
if 'media_type' in kwargs:
|
||||||
media_type = kwargs.get('media_type', "")
|
media_type = kwargs.get('media_type', "")
|
||||||
if media_type != 'all':
|
if media_type != 'all':
|
||||||
|
@ -766,7 +769,7 @@ class WebInterface(object):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@cherrypy.expose
|
@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
|
metadata = None
|
||||||
query = None
|
query = None
|
||||||
|
|
||||||
|
@ -777,12 +780,11 @@ class WebInterface(object):
|
||||||
if source == 'history':
|
if source == 'history':
|
||||||
data_factory = datafactory.DataFactory()
|
data_factory = datafactory.DataFactory()
|
||||||
metadata = data_factory.get_metadata_details(row_id=item_id)
|
metadata = data_factory.get_metadata_details(row_id=item_id)
|
||||||
elif item_id == 'movie':
|
elif library_id:
|
||||||
metadata = {'type': 'library', 'library': 'movie', 'media_type': 'movie', 'title': 'Movies'}
|
pms_connect = pmsconnect.PmsConnect()
|
||||||
elif item_id == 'show':
|
result = pms_connect.get_library_metadata_details(library_id=library_id)
|
||||||
metadata = {'type': 'library', 'library': 'show', 'media_type': 'episode', 'title': 'TV Shows'}
|
if result:
|
||||||
elif item_id == 'artist':
|
metadata = result['metadata']
|
||||||
metadata = {'type': 'library', 'library': 'artist', 'media_type': 'track', 'title': 'Music'}
|
|
||||||
else:
|
else:
|
||||||
pms_connect = pmsconnect.PmsConnect()
|
pms_connect = pmsconnect.PmsConnect()
|
||||||
result = pms_connect.get_metadata_details(rating_key=item_id)
|
result = pms_connect.get_metadata_details(rating_key=item_id)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue