mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-13 00:32:58 -07:00
Update info pages for smart collections
This commit is contained in:
parent
cc18b1b177
commit
7b08e3a2a7
4 changed files with 142 additions and 133 deletions
|
@ -3746,6 +3746,7 @@ a:hover .overlay-refresh-image {
|
||||||
a:hover .overlay-refresh-image:hover {
|
a:hover .overlay-refresh-image:hover {
|
||||||
opacity: .9;
|
opacity: .9;
|
||||||
}
|
}
|
||||||
|
.smart-collection-image,
|
||||||
.smart-playlist-image {
|
.smart-playlist-image {
|
||||||
float: left;
|
float: left;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|
|
@ -229,6 +229,9 @@ DOCUMENTATION :: END
|
||||||
<div class="summary-poster-face-overlay">
|
<div class="summary-poster-face-overlay">
|
||||||
<span></span>
|
<span></span>
|
||||||
</div>
|
</div>
|
||||||
|
% if data['media_type'] == 'collection' and data['smart']:
|
||||||
|
<span class="smart-collection-image" title="Smart Collection"><i class="fa fa-cog"></i></span>
|
||||||
|
% endif
|
||||||
</div>
|
</div>
|
||||||
% if _session['user_group'] == 'admin':
|
% if _session['user_group'] == 'admin':
|
||||||
<span class="overlay-refresh-image" title="Refresh image"><i class="fa fa-refresh refresh_pms_image"></i></span>
|
<span class="overlay-refresh-image" title="Refresh image"><i class="fa fa-refresh refresh_pms_image"></i></span>
|
||||||
|
@ -376,7 +379,7 @@ DOCUMENTATION :: END
|
||||||
Released <strong> ${data['year']}</strong>
|
Released <strong> ${data['year']}</strong>
|
||||||
% elif data['media_type'] in ('photo', 'clip'):
|
% elif data['media_type'] in ('photo', 'clip'):
|
||||||
Taken <strong> <span id="airdate">${data['originally_available_at']}</span></strong>
|
Taken <strong> <span id="airdate">${data['originally_available_at']}</span></strong>
|
||||||
% elif data['media_type'] == 'collection':
|
% elif data['media_type'] == 'collection' and data['min_year'] and data['max_year']:
|
||||||
Year <strong> ${data['min_year']} - ${data['max_year']}</strong>
|
Year <strong> ${data['min_year']} - ${data['max_year']}</strong>
|
||||||
% elif data['year']:
|
% elif data['year']:
|
||||||
Year <strong> ${data['year']}</strong>
|
Year <strong> ${data['year']}</strong>
|
||||||
|
|
|
@ -41,134 +41,7 @@ DOCUMENTATION :: END
|
||||||
% else:
|
% else:
|
||||||
<li>
|
<li>
|
||||||
% endif
|
% endif
|
||||||
% if data['children_type'] == 'movie':
|
% if media_type == 'playlist':
|
||||||
<a href="${page('info', child['rating_key'])}" title="${child['title']}">
|
|
||||||
<div class="item-children-poster">
|
|
||||||
<div class="item-children-poster-face poster-item" style="background-image: url(${page('pms_image_proxy', child['thumb'], child['rating_key'], 300, 450, fallback='poster')});"></div>
|
|
||||||
% if _session['user_group'] == 'admin':
|
|
||||||
<span class="overlay-refresh-image" title="Refresh image"><i class="fa fa-refresh refresh_pms_image"></i></span>
|
|
||||||
% endif
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
<div class="item-children-instance-text-wrapper poster-item">
|
|
||||||
<h3>
|
|
||||||
<a href="${page('info', child['rating_key'])}" title="${child['title']}">${child['title']}</a>
|
|
||||||
</h3>
|
|
||||||
<h3 class="text-muted">${child['year']}</h3>
|
|
||||||
</div>
|
|
||||||
% elif data['children_type'] == 'show':
|
|
||||||
<a href="${page('info', child['rating_key'])}" title="${child['title']}">
|
|
||||||
<div class="item-children-poster">
|
|
||||||
<div class="item-children-poster-face poster-item" style="background-image: url(${page('pms_image_proxy', child['thumb'], child['rating_key'], 300, 450, fallback='poster')});"></div>
|
|
||||||
% if _session['user_group'] == 'admin':
|
|
||||||
<span class="overlay-refresh-image" title="Refresh image"><i class="fa fa-refresh refresh_pms_image"></i></span>
|
|
||||||
% endif
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
<div class="item-children-instance-text-wrapper poster-item">
|
|
||||||
<h3>
|
|
||||||
<a href="${page('info', child['rating_key'])}" title="${child['title']}">${child['title']}</a>
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
% elif data['children_type'] == 'season':
|
|
||||||
<a href="${page('info', child['rating_key'])}" title="${child['title']}">
|
|
||||||
<div class="item-children-poster">
|
|
||||||
% if child['thumb']:
|
|
||||||
<div class="item-children-poster-face poster-item" style="background-image: url(${page('pms_image_proxy', child['thumb'], child['rating_key'], 300, 450, fallback='poster')});">
|
|
||||||
% else:
|
|
||||||
<div class="item-children-poster-face poster-item" style="background-image: url(${page('pms_image_proxy', child['parent_thumb'], child['parent_rating_key'], 300, 450, fallback='poster')});">
|
|
||||||
% endif
|
|
||||||
<div class="item-children-card-overlay">
|
|
||||||
<div class="item-children-overlay-text">
|
|
||||||
${child['title']}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
% if _session['user_group'] == 'admin':
|
|
||||||
<span class="overlay-refresh-image" title="Refresh image"><i class="fa fa-refresh refresh_pms_image"></i></span>
|
|
||||||
% endif
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
% elif data['children_type'] == 'episode':
|
|
||||||
<a href="${page('info', child['rating_key'])}" title="Episode ${child['media_index']}">
|
|
||||||
<div class="item-children-poster">
|
|
||||||
<div class="item-children-poster-face episode-item" style="background-image: url(${page('pms_image_proxy', child['thumb'], child['rating_key'], 500, 280, fallback='art')});">
|
|
||||||
<div class="item-children-card-overlay">
|
|
||||||
<div class="item-children-overlay-text">
|
|
||||||
Episode ${child['media_index'] or child['originally_available_at']}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
% if _session['user_group'] == 'admin':
|
|
||||||
<span class="overlay-refresh-image" title="Refresh image"><i class="fa fa-refresh refresh_pms_image"></i></span>
|
|
||||||
% endif
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
<div class="item-children-instance-text-wrapper episode-item">
|
|
||||||
<h3>
|
|
||||||
<a href="${page('info', child['rating_key'])}" title="${child['title']}">${child['title']}</a>
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
% elif data['children_type'] == 'album':
|
|
||||||
<a href="${page('info', child['rating_key'])}" title="${child['title']}">
|
|
||||||
<div class="item-children-poster">
|
|
||||||
<div class="item-children-poster-face cover-item" style="background-image: url(${page('pms_image_proxy', child['thumb'], child['rating_key'], 300, 300, fallback='cover')});"></div>
|
|
||||||
% if _session['user_group'] == 'admin':
|
|
||||||
<span class="overlay-refresh-image" title="Refresh image"><i class="fa fa-refresh refresh_pms_image"></i></span>
|
|
||||||
% endif
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
<div class="item-children-instance-text-wrapper cover-item">
|
|
||||||
<h3>
|
|
||||||
<a href="${page('info', child['rating_key'])}" title="${child['title']}">${child['title']}</a>
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
% elif data['children_type'] == 'track':
|
|
||||||
<% e = 'even' if loop.index % 2 == 0 else 'odd' %>
|
|
||||||
<div class="item-children-list-item-${e}">
|
|
||||||
<span class="item-children-list-item-index">${child['media_index']}</span>
|
|
||||||
<span class="item-children-list-item-title">
|
|
||||||
<span class="media-type-tooltip" data-toggle="tooltip" title="Track"><i class="fa fa-music fa-fw"></i></span>
|
|
||||||
<a href="${page('info', child['rating_key'])}" title="${child['title']}">
|
|
||||||
<span class="thumb-tooltip" data-toggle="popover" data-img="${page('pms_image_proxy', child['parent_thumb'], child['parent_rating_key'], 300, 300, fallback='cover')}" data-height="80" data-width="80">
|
|
||||||
${child['title']}
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
% if child['original_title']:
|
|
||||||
<span class="text-muted"> - ${child['original_title']}</span>
|
|
||||||
% endif
|
|
||||||
</span>
|
|
||||||
<span class="item-children-list-item-duration" id="item-children-list-item-duration-${loop.index + 1}">
|
|
||||||
<% f = 'h:mm:ss' if cast_to_int(child['duration']) >= 3600000 else 'm:ss' %>
|
|
||||||
<script>$('#item-children-list-item-duration-${loop.index + 1}').text(moment.utc(${child['duration']}).format("${f}"));</script>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
% elif data['children_type'] == 'photo':
|
|
||||||
<% e = 'even' if loop.index % 2 == 0 else 'odd' %>
|
|
||||||
<div class="item-children-list-item-${e}">
|
|
||||||
<span class="item-children-list-item-index">${loop.index + 1}</span>
|
|
||||||
<span class="item-children-list-item-title">
|
|
||||||
% if child['media_type'] == 'photo_album':
|
|
||||||
<span class="media-type-tooltip" data-toggle="tooltip" title="Photo"><i class="fa fa-camera fa-fw"></i></span>
|
|
||||||
% elif child['media_type'] == 'clip':
|
|
||||||
<span class="media-type-tooltip" data-toggle="tooltip" title="Photo"><i class="fa fa-video-camera fa-fw"></i></span>
|
|
||||||
% else:
|
|
||||||
<span class="media-type-tooltip" data-toggle="tooltip" title="Photo"><i class="fa fa-picture-o fa-fw"></i></span>
|
|
||||||
% endif
|
|
||||||
<a href="${page('info', child['rating_key'])}" title="${child['title']}">
|
|
||||||
<span class="thumb-tooltip" data-toggle="popover" data-img="${page('pms_image_proxy', child['thumb'], child['rating_key'], 300, 300, fallback='cover')}" data-height="80" data-width="80">
|
|
||||||
${child['title']}
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
% if child['duration']:
|
|
||||||
<span class="item-children-list-item-duration" id="item-children-list-item-duration-${loop.index + 1}">
|
|
||||||
<% f = 'h:mm:ss' if cast_to_int(child['duration']) >= 3600000 else 'm:ss' %>
|
|
||||||
<script>$('#item-children-list-item-duration-${loop.index + 1}').text(moment.utc(${child['duration']}).format("${f}"));</script>
|
|
||||||
</span>
|
|
||||||
% endif
|
|
||||||
</div>
|
|
||||||
% elif media_type == 'playlist':
|
|
||||||
<% e = 'even' if loop.index % 2 == 0 else 'odd' %>
|
<% e = 'even' if loop.index % 2 == 0 else 'odd' %>
|
||||||
<div class="item-children-list-item-${e}">
|
<div class="item-children-list-item-${e}">
|
||||||
<span class="item-children-list-item-index">${loop.index + 1}</span>
|
<span class="item-children-list-item-index">${loop.index + 1}</span>
|
||||||
|
@ -239,6 +112,133 @@ DOCUMENTATION :: END
|
||||||
</span>
|
</span>
|
||||||
% endif
|
% endif
|
||||||
</div>
|
</div>
|
||||||
|
% elif child['media_type'] == 'movie':
|
||||||
|
<a href="${page('info', child['rating_key'])}" title="${child['title']}">
|
||||||
|
<div class="item-children-poster">
|
||||||
|
<div class="item-children-poster-face poster-item" style="background-image: url(${page('pms_image_proxy', child['thumb'], child['rating_key'], 300, 450, fallback='poster')});"></div>
|
||||||
|
% if _session['user_group'] == 'admin':
|
||||||
|
<span class="overlay-refresh-image" title="Refresh image"><i class="fa fa-refresh refresh_pms_image"></i></span>
|
||||||
|
% endif
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<div class="item-children-instance-text-wrapper poster-item">
|
||||||
|
<h3>
|
||||||
|
<a href="${page('info', child['rating_key'])}" title="${child['title']}">${child['title']}</a>
|
||||||
|
</h3>
|
||||||
|
<h3 class="text-muted">${child['year']}</h3>
|
||||||
|
</div>
|
||||||
|
% elif child['media_type'] == 'show':
|
||||||
|
<a href="${page('info', child['rating_key'])}" title="${child['title']}">
|
||||||
|
<div class="item-children-poster">
|
||||||
|
<div class="item-children-poster-face poster-item" style="background-image: url(${page('pms_image_proxy', child['thumb'], child['rating_key'], 300, 450, fallback='poster')});"></div>
|
||||||
|
% if _session['user_group'] == 'admin':
|
||||||
|
<span class="overlay-refresh-image" title="Refresh image"><i class="fa fa-refresh refresh_pms_image"></i></span>
|
||||||
|
% endif
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<div class="item-children-instance-text-wrapper poster-item">
|
||||||
|
<h3>
|
||||||
|
<a href="${page('info', child['rating_key'])}" title="${child['title']}">${child['title']}</a>
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
% elif child['media_type'] == 'season':
|
||||||
|
<a href="${page('info', child['rating_key'])}" title="${child['title']}">
|
||||||
|
<div class="item-children-poster">
|
||||||
|
% if child['thumb']:
|
||||||
|
<div class="item-children-poster-face poster-item" style="background-image: url(${page('pms_image_proxy', child['thumb'], child['rating_key'], 300, 450, fallback='poster')});">
|
||||||
|
% else:
|
||||||
|
<div class="item-children-poster-face poster-item" style="background-image: url(${page('pms_image_proxy', child['parent_thumb'], child['parent_rating_key'], 300, 450, fallback='poster')});">
|
||||||
|
% endif
|
||||||
|
<div class="item-children-card-overlay">
|
||||||
|
<div class="item-children-overlay-text">
|
||||||
|
${child['title']}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
% if _session['user_group'] == 'admin':
|
||||||
|
<span class="overlay-refresh-image" title="Refresh image"><i class="fa fa-refresh refresh_pms_image"></i></span>
|
||||||
|
% endif
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
% elif child['media_type'] == 'episode':
|
||||||
|
<a href="${page('info', child['rating_key'])}" title="Episode ${child['media_index']}">
|
||||||
|
<div class="item-children-poster">
|
||||||
|
<div class="item-children-poster-face episode-item" style="background-image: url(${page('pms_image_proxy', child['thumb'], child['rating_key'], 500, 280, fallback='art')});">
|
||||||
|
<div class="item-children-card-overlay">
|
||||||
|
<div class="item-children-overlay-text">
|
||||||
|
Episode ${child['media_index'] or child['originally_available_at']}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
% if _session['user_group'] == 'admin':
|
||||||
|
<span class="overlay-refresh-image" title="Refresh image"><i class="fa fa-refresh refresh_pms_image"></i></span>
|
||||||
|
% endif
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<div class="item-children-instance-text-wrapper episode-item">
|
||||||
|
<h3>
|
||||||
|
<a href="${page('info', child['rating_key'])}" title="${child['title']}">${child['title']}</a>
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
% elif child['media_type'] == 'album':
|
||||||
|
<a href="${page('info', child['rating_key'])}" title="${child['title']}">
|
||||||
|
<div class="item-children-poster">
|
||||||
|
<div class="item-children-poster-face cover-item" style="background-image: url(${page('pms_image_proxy', child['thumb'], child['rating_key'], 300, 300, fallback='cover')});"></div>
|
||||||
|
% if _session['user_group'] == 'admin':
|
||||||
|
<span class="overlay-refresh-image" title="Refresh image"><i class="fa fa-refresh refresh_pms_image"></i></span>
|
||||||
|
% endif
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<div class="item-children-instance-text-wrapper cover-item">
|
||||||
|
<h3>
|
||||||
|
<a href="${page('info', child['rating_key'])}" title="${child['title']}">${child['title']}</a>
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
% elif child['media_type'] == 'track':
|
||||||
|
<% e = 'even' if loop.index % 2 == 0 else 'odd' %>
|
||||||
|
<div class="item-children-list-item-${e}">
|
||||||
|
<span class="item-children-list-item-index">${child['media_index']}</span>
|
||||||
|
<span class="item-children-list-item-title">
|
||||||
|
<span class="media-type-tooltip" data-toggle="tooltip" title="Track"><i class="fa fa-music fa-fw"></i></span>
|
||||||
|
<a href="${page('info', child['rating_key'])}" title="${child['title']}">
|
||||||
|
<span class="thumb-tooltip" data-toggle="popover" data-img="${page('pms_image_proxy', child['parent_thumb'], child['parent_rating_key'], 300, 300, fallback='cover')}" data-height="80" data-width="80">
|
||||||
|
${child['title']}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
% if child['original_title']:
|
||||||
|
<span class="text-muted"> - ${child['original_title']}</span>
|
||||||
|
% endif
|
||||||
|
</span>
|
||||||
|
<span class="item-children-list-item-duration" id="item-children-list-item-duration-${loop.index + 1}">
|
||||||
|
<% f = 'h:mm:ss' if cast_to_int(child['duration']) >= 3600000 else 'm:ss' %>
|
||||||
|
<script>$('#item-children-list-item-duration-${loop.index + 1}').text(moment.utc(${child['duration']}).format("${f}"));</script>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
% elif child['media_type'] == 'photo':
|
||||||
|
<% e = 'even' if loop.index % 2 == 0 else 'odd' %>
|
||||||
|
<div class="item-children-list-item-${e}">
|
||||||
|
<span class="item-children-list-item-index">${loop.index + 1}</span>
|
||||||
|
<span class="item-children-list-item-title">
|
||||||
|
% if child['media_type'] == 'photo_album':
|
||||||
|
<span class="media-type-tooltip" data-toggle="tooltip" title="Photo"><i class="fa fa-camera fa-fw"></i></span>
|
||||||
|
% elif child['media_type'] == 'clip':
|
||||||
|
<span class="media-type-tooltip" data-toggle="tooltip" title="Photo"><i class="fa fa-video-camera fa-fw"></i></span>
|
||||||
|
% else:
|
||||||
|
<span class="media-type-tooltip" data-toggle="tooltip" title="Photo"><i class="fa fa-picture-o fa-fw"></i></span>
|
||||||
|
% endif
|
||||||
|
<a href="${page('info', child['rating_key'])}" title="${child['title']}">
|
||||||
|
<span class="thumb-tooltip" data-toggle="popover" data-img="${page('pms_image_proxy', child['thumb'], child['rating_key'], 300, 300, fallback='cover')}" data-height="80" data-width="80">
|
||||||
|
${child['title']}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
% if child['duration']:
|
||||||
|
<span class="item-children-list-item-duration" id="item-children-list-item-duration-${loop.index + 1}">
|
||||||
|
<% f = 'h:mm:ss' if cast_to_int(child['duration']) >= 3600000 else 'm:ss' %>
|
||||||
|
<script>$('#item-children-list-item-duration-${loop.index + 1}').text(moment.utc(${child['duration']}).format("${f}"));</script>
|
||||||
|
</span>
|
||||||
|
% endif
|
||||||
|
</div>
|
||||||
% endif
|
% endif
|
||||||
</li>
|
</li>
|
||||||
% endif
|
% endif
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# This file is part of Tautulli.
|
# This file is part of Tautulli.
|
||||||
#
|
#
|
||||||
|
@ -144,7 +144,7 @@ class PmsConnect(object):
|
||||||
|
|
||||||
return request
|
return request
|
||||||
|
|
||||||
def get_metadata_children(self, rating_key='', output_format=''):
|
def get_metadata_children(self, rating_key='', collection=False, output_format=''):
|
||||||
"""
|
"""
|
||||||
Return metadata for children of the request item.
|
Return metadata for children of the request item.
|
||||||
|
|
||||||
|
@ -153,7 +153,9 @@ class PmsConnect(object):
|
||||||
|
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
uri = '/library/metadata/' + rating_key + '/children'
|
uri = '/library/{}/{}/children'.format(
|
||||||
|
'collections' if collection else 'metadata', rating_key
|
||||||
|
)
|
||||||
request = self.request_handler.make_request(uri=uri,
|
request = self.request_handler.make_request(uri=uri,
|
||||||
request_type='GET',
|
request_type='GET',
|
||||||
output_format=output_format)
|
output_format=output_format)
|
||||||
|
@ -1273,7 +1275,8 @@ class PmsConnect(object):
|
||||||
'guids': guids,
|
'guids': guids,
|
||||||
'full_title': helpers.get_xml_attr(metadata_main, 'title'),
|
'full_title': helpers.get_xml_attr(metadata_main, 'title'),
|
||||||
'children_count': helpers.cast_to_int(helpers.get_xml_attr(metadata_main, 'childCount')),
|
'children_count': helpers.cast_to_int(helpers.get_xml_attr(metadata_main, 'childCount')),
|
||||||
'live': int(helpers.get_xml_attr(metadata_main, 'live') == '1')
|
'live': int(helpers.get_xml_attr(metadata_main, 'live') == '1'),
|
||||||
|
'smart': helpers.cast_to_int(helpers.get_xml_attr(metadata_main, 'smart'))
|
||||||
}
|
}
|
||||||
|
|
||||||
elif metadata_type == 'playlist':
|
elif metadata_type == 'playlist':
|
||||||
|
@ -2297,6 +2300,8 @@ class PmsConnect(object):
|
||||||
|
|
||||||
if media_type == 'playlist':
|
if media_type == 'playlist':
|
||||||
children_data = self.get_playlist_items(rating_key, output_format='xml')
|
children_data = self.get_playlist_items(rating_key, output_format='xml')
|
||||||
|
elif media_type == 'collection':
|
||||||
|
children_data = self.get_metadata_children(rating_key, collection=True, output_format='xml')
|
||||||
elif get_grandchildren:
|
elif get_grandchildren:
|
||||||
children_data = self.get_metadata_grandchildren(rating_key, output_format='xml')
|
children_data = self.get_metadata_grandchildren(rating_key, output_format='xml')
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue