mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-29 19:18:33 -07:00
Add Live TV metadata to activity card
This commit is contained in:
parent
c6cfb4a020
commit
ee1b0eeeff
3 changed files with 75 additions and 26 deletions
|
@ -96,7 +96,13 @@ DOCUMENTATION :: END
|
||||||
<div id="poster-${sk}-bg" class="dashboard-activity-poster" style="background-image: url(pms_image_proxy?img=${data['parent_thumb']}&width=300&height=300&opacity=60&background=282828&blur=3&fallback=cover&refresh=true);"></div>
|
<div id="poster-${sk}-bg" class="dashboard-activity-poster" style="background-image: url(pms_image_proxy?img=${data['parent_thumb']}&width=300&height=300&opacity=60&background=282828&blur=3&fallback=cover&refresh=true);"></div>
|
||||||
% endif
|
% endif
|
||||||
% if data['live'] == 1:
|
% if data['live'] == 1:
|
||||||
|
% if data['grandparent_thumb'].startswith('http'):
|
||||||
|
<div id="poster-${sk}" class="dashboard-activity-poster" style="background-image: url(${data['grandparent_thumb']});"></div>
|
||||||
|
% elif data['grandparent_thumb']:
|
||||||
|
<div id="poster-${sk}" class="dashboard-activity-poster" style="background-image: url(pms_image_proxy?img=${data['grandparent_thumb']}&width=300&height=450&fallback=poster&refresh=true);"></div>
|
||||||
|
% else:
|
||||||
<div id="poster-${sk}" class="dashboard-activity-poster" style="background-image: url(images/poster-live.png);"></div>
|
<div id="poster-${sk}" class="dashboard-activity-poster" style="background-image: url(images/poster-live.png);"></div>
|
||||||
|
% endif
|
||||||
% elif data['channel_stream'] == 0:
|
% elif data['channel_stream'] == 0:
|
||||||
% if data['media_type'] == 'movie':
|
% if data['media_type'] == 'movie':
|
||||||
<a id="poster-url-${sk}" href="${href}" title="${data['title']}">
|
<a id="poster-url-${sk}" href="${href}" title="${data['title']}">
|
||||||
|
@ -377,7 +383,7 @@ DOCUMENTATION :: END
|
||||||
<div class="dashboard-activity-progress">
|
<div class="dashboard-activity-progress">
|
||||||
<div class="dashboard-activity-progress-bar">
|
<div class="dashboard-activity-progress-bar">
|
||||||
% if data['live'] == 1:
|
% if data['live'] == 1:
|
||||||
<div id="progress-bar-${sk}" class="progress-bar" style="width: 100%" data-toggle="tooltip" title="Stream Progress Live">Live</div>
|
<div id="progress-bar-${sk}" class="progress-bar" style="width: 100%" data-state="live" data-toggle="tooltip" title="Stream Progress Live">Live</div>
|
||||||
% else:
|
% else:
|
||||||
<div id="buffer-bar-${sk}" class="buffer-bar" style="width: ${data['transcode_progress']}%" data-toggle="tooltip" title="Transcoder Progress ${data['transcode_progress']}%">${data['transcode_progress']}%</div>
|
<div id="buffer-bar-${sk}" class="buffer-bar" style="width: ${data['transcode_progress']}%" data-toggle="tooltip" title="Transcoder Progress ${data['transcode_progress']}%">${data['transcode_progress']}%</div>
|
||||||
<div id="progress-bar-${sk}" class="progress-bar" style="width: ${data['progress_percent']}%" data-last_view_offset="${data['view_offset']}" data-view_offset="${data['view_offset']}" data-stream_duration="${data['stream_duration']}" data-state="${data['state']}" data-toggle="tooltip" title="Stream Progress ${data['progress_percent']}%">${data['progress_percent']}%</div>
|
<div id="progress-bar-${sk}" class="progress-bar" style="width: ${data['progress_percent']}%" data-last_view_offset="${data['view_offset']}" data-view_offset="${data['view_offset']}" data-stream_duration="${data['stream_duration']}" data-state="${data['state']}" data-toggle="tooltip" title="Stream Progress ${data['progress_percent']}%">${data['progress_percent']}%</div>
|
||||||
|
@ -400,7 +406,16 @@ DOCUMENTATION :: END
|
||||||
% endif
|
% endif
|
||||||
</div>
|
</div>
|
||||||
<div class="dashboard-activity-metadata-title">
|
<div class="dashboard-activity-metadata-title">
|
||||||
% if data['channel_stream'] == 0:
|
% if data['live'] == 1:
|
||||||
|
% if data['media_type'] == 'movie':
|
||||||
|
<span title="${data['title']}">${data['title']}</span>
|
||||||
|
% elif data['media_type'] == 'episode':
|
||||||
|
<span title="${data['grandparent_title']}">${data['grandparent_title']}</span>
|
||||||
|
- <span title="${data['title']}">${data['title']}</span>
|
||||||
|
% else:
|
||||||
|
<span title="${data['title']}">${data['title']}</span>
|
||||||
|
% endif
|
||||||
|
% elif data['channel_stream'] == 0:
|
||||||
% if data['media_type'] == 'movie':
|
% if data['media_type'] == 'movie':
|
||||||
<a href="${href}" title="${data['title']}">${data['title']}</a>
|
<a href="${href}" title="${data['title']}">${data['title']}</a>
|
||||||
% elif data['media_type'] == 'episode':
|
% elif data['media_type'] == 'episode':
|
||||||
|
@ -425,7 +440,7 @@ DOCUMENTATION :: END
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dashboard-activity-metadata-subtitle-container">
|
<div class="dashboard-activity-metadata-subtitle-container">
|
||||||
% if data['live'] == 1:
|
% if data['live'] == 1 and data['media_type'] == 'clip':
|
||||||
<div id="media-type-${sk}" class="dashboard-activity-metadata-media_type-icon" title="Plex Live TV">
|
<div id="media-type-${sk}" class="dashboard-activity-metadata-media_type-icon" title="Plex Live TV">
|
||||||
<i class="fa fa-fw fa-television"></i>
|
<i class="fa fa-fw fa-television"></i>
|
||||||
</div>
|
</div>
|
||||||
|
@ -449,8 +464,20 @@ DOCUMENTATION :: END
|
||||||
</div>
|
</div>
|
||||||
% endif
|
% endif
|
||||||
<div class="dashboard-activity-metadata-subtitle">
|
<div class="dashboard-activity-metadata-subtitle">
|
||||||
% if data['live'] == 1:
|
% if data['live']:
|
||||||
|
% if data['media_type'] == 'movie':
|
||||||
|
<span title="${data['year']}" class="sub-heading">${data['year']}</span>
|
||||||
|
% elif data['media_type'] == 'episode':
|
||||||
|
<span title="Season ${data['parent_media_index']}" class="sub-heading">S${data['parent_media_index']}</span>
|
||||||
|
· <span title="Episode ${data['media_index']}" class="sub-heading">E${data['media_index']}</span>
|
||||||
|
% else:
|
||||||
<span title="Plex Live TV" class="sub-heading">Plex Live TV</span>
|
<span title="Plex Live TV" class="sub-heading">Plex Live TV</span>
|
||||||
|
% endif
|
||||||
|
% if data['channel_identifier']:
|
||||||
|
<span class="thumb-tooltip" data-toggle="popover" data-img="${data['channel_thumb']}" data-height="40" data-width="40">
|
||||||
|
<span title="${data['channel_call_sign']} ${data['channel_identifier']}" class="sub-heading">(${data['channel_call_sign']} ${data['channel_identifier']})</span>
|
||||||
|
</span>
|
||||||
|
% endif
|
||||||
% elif data['channel_stream'] == 0:
|
% elif data['channel_stream'] == 0:
|
||||||
% if data['media_type'] == 'movie':
|
% if data['media_type'] == 'movie':
|
||||||
<span title="${data['year']}" class="sub-heading">${data['year']}</span>
|
<span title="${data['year']}" class="sub-heading">${data['year']}</span>
|
||||||
|
|
|
@ -543,10 +543,12 @@
|
||||||
// Update the progress bars, percent - 3 because of 3px padding-right
|
// Update the progress bars, percent - 3 because of 3px padding-right
|
||||||
$('#buffer-bar-' + key).width(parseInt(s.transcode_progress) - 3 + '%').html(s.transcode_progress + '%')
|
$('#buffer-bar-' + key).width(parseInt(s.transcode_progress) - 3 + '%').html(s.transcode_progress + '%')
|
||||||
.attr('data-original-title', 'Transcoder Progress ' + s.transcode_progress + '%');
|
.attr('data-original-title', 'Transcoder Progress ' + s.transcode_progress + '%');
|
||||||
var progress_bar = $('#progress-bar-' + key);
|
if (s.live !== 1) {
|
||||||
progress_bar.data('state', s.state);
|
var progress_bar = $('#progress-bar-' + key);
|
||||||
if (progress_bar.data('last_view_offset') !== s.view_offset) {
|
progress_bar.data('state', s.state);
|
||||||
progress_bar.data('last_view_offset', s.view_offset).data('view_offset', s.view_offset);
|
if (progress_bar.data('last_view_offset') !== s.view_offset) {
|
||||||
|
progress_bar.data('last_view_offset', s.view_offset).data('view_offset', s.view_offset);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add temporary class so we know which instances are still active
|
// Add temporary class so we know which instances are still active
|
||||||
|
@ -593,6 +595,17 @@
|
||||||
|
|
||||||
$('#activity-instance-' + session_key + ' .dashboard-activity-info-scroller').scrollbar();
|
$('#activity-instance-' + session_key + ' .dashboard-activity-info-scroller').scrollbar();
|
||||||
$('#activity-instance-' + session_key + ' [data-toggle=tooltip]').tooltip({ container: 'body', placement: 'right', delay: 50 });
|
$('#activity-instance-' + session_key + ' [data-toggle=tooltip]').tooltip({ container: 'body', placement: 'right', delay: 50 });
|
||||||
|
$('#activity-instance-' + session_key + ' [data-toggle=popover]').popover({
|
||||||
|
html: true,
|
||||||
|
container: 'body',
|
||||||
|
trigger: 'hover',
|
||||||
|
placement: 'right',
|
||||||
|
delay: 50,
|
||||||
|
template: '<div class="popover history-thumbnail-popover" role="tooltip"><div class="arrow" style="top: 50%;"></div><div class="popover-content"></div></div>',
|
||||||
|
content: function () {
|
||||||
|
return '<div class="history-thumbnail" style="background-image: url(' + $(this).data('img') + '); height: ' + $(this).data('height') + 'px; width: ' + $(this).data('width') + 'px; padding: 3px;" />';
|
||||||
|
}
|
||||||
|
});
|
||||||
$('#terminate-button-' + session_key).tooltip('destroy').tooltip({ container: 'body', placement: 'left', delay: 50 });
|
$('#terminate-button-' + session_key).tooltip('destroy').tooltip({ container: 'body', placement: 'left', delay: 50 });
|
||||||
lockScroll('#activity-instance-' + session_key + ' .dashboard-activity-info-scroller');
|
lockScroll('#activity-instance-' + session_key + ' .dashboard-activity-info-scroller');
|
||||||
|
|
||||||
|
|
|
@ -641,6 +641,8 @@ class PmsConnect(object):
|
||||||
if metadata_main.nodeName == 'Directory' and metadata_type == 'photo':
|
if metadata_main.nodeName == 'Directory' and metadata_type == 'photo':
|
||||||
metadata_type = 'photo_album'
|
metadata_type = 'photo_album'
|
||||||
|
|
||||||
|
live = int(helpers.get_xml_attr(metadata_main, 'live') == '1')
|
||||||
|
|
||||||
section_id = helpers.get_xml_attr(a, 'librarySectionID')
|
section_id = helpers.get_xml_attr(a, 'librarySectionID')
|
||||||
library_name = helpers.get_xml_attr(a, 'librarySectionTitle')
|
library_name = helpers.get_xml_attr(a, 'librarySectionTitle')
|
||||||
|
|
||||||
|
@ -1323,24 +1325,31 @@ class PmsConnect(object):
|
||||||
|
|
||||||
audio_channels = helpers.get_xml_attr(media, 'audioChannels')
|
audio_channels = helpers.get_xml_attr(media, 'audioChannels')
|
||||||
|
|
||||||
medias.append({'id': helpers.get_xml_attr(media, 'id'),
|
media_info = {'id': helpers.get_xml_attr(media, 'id'),
|
||||||
'container': helpers.get_xml_attr(media, 'container'),
|
'container': helpers.get_xml_attr(media, 'container'),
|
||||||
'bitrate': helpers.get_xml_attr(media, 'bitrate'),
|
'bitrate': helpers.get_xml_attr(media, 'bitrate'),
|
||||||
'height': helpers.get_xml_attr(media, 'height'),
|
'height': helpers.get_xml_attr(media, 'height'),
|
||||||
'width': helpers.get_xml_attr(media, 'width'),
|
'width': helpers.get_xml_attr(media, 'width'),
|
||||||
'aspect_ratio': helpers.get_xml_attr(media, 'aspectRatio'),
|
'aspect_ratio': helpers.get_xml_attr(media, 'aspectRatio'),
|
||||||
'video_codec': helpers.get_xml_attr(media, 'videoCodec'),
|
'video_codec': helpers.get_xml_attr(media, 'videoCodec'),
|
||||||
'video_resolution': video_resolution,
|
'video_resolution': video_resolution,
|
||||||
'video_full_resolution': video_full_resolution,
|
'video_full_resolution': video_full_resolution,
|
||||||
'video_framerate': helpers.get_xml_attr(media, 'videoFrameRate'),
|
'video_framerate': helpers.get_xml_attr(media, 'videoFrameRate'),
|
||||||
'video_profile': helpers.get_xml_attr(media, 'videoProfile'),
|
'video_profile': helpers.get_xml_attr(media, 'videoProfile'),
|
||||||
'audio_codec': helpers.get_xml_attr(media, 'audioCodec'),
|
'audio_codec': helpers.get_xml_attr(media, 'audioCodec'),
|
||||||
'audio_channels': audio_channels,
|
'audio_channels': audio_channels,
|
||||||
'audio_channel_layout': common.AUDIO_CHANNELS.get(audio_channels, audio_channels),
|
'audio_channel_layout': common.AUDIO_CHANNELS.get(audio_channels, audio_channels),
|
||||||
'audio_profile': helpers.get_xml_attr(media, 'audioProfile'),
|
'audio_profile': helpers.get_xml_attr(media, 'audioProfile'),
|
||||||
'optimized_version': int(helpers.get_xml_attr(media, 'proxyType') == '42'),
|
'optimized_version': int(helpers.get_xml_attr(media, 'proxyType') == '42'),
|
||||||
'parts': parts
|
'parts': parts
|
||||||
})
|
}
|
||||||
|
|
||||||
|
if live:
|
||||||
|
media_info['channel_call_sign'] = helpers.get_xml_attr(media, 'channelCallSign') or 'WBTV HD'
|
||||||
|
media_info['channel_identifier'] = helpers.get_xml_attr(media, 'channelIdentifier') or '3.1'
|
||||||
|
media_info['channel_thumb'] = helpers.get_xml_attr(media, 'channelThumb') or 'http://cps-static.rovicorp.com/2/Open/2400x2400_1578/Source/77752/cbs_2400_color_dark_light.png'
|
||||||
|
|
||||||
|
medias.append(media_info)
|
||||||
|
|
||||||
metadata['media_info'] = medias
|
metadata['media_info'] = medias
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue