diff --git a/data/interfaces/default/current_activity_instance.html b/data/interfaces/default/current_activity_instance.html index dc2355e8..c69373e0 100644 --- a/data/interfaces/default/current_activity_instance.html +++ b/data/interfaces/default/current_activity_instance.html @@ -163,6 +163,12 @@ DOCUMENTATION :: END Video  Direct Play (${data['video_codec'].upper()} ${plexpy.common.VIDEO_RESOLUTION_OVERRIDES.get(data['video_resolution'], data['video_resolution'])}) % endif
+ % elif data['media_type'] == 'photo': + Video  Direct Play (${data['width']}x${data['height']}) +
+ % else: + Video  None +
% endif % if data['media_type'] in ('movie', 'episode', 'clip', 'track') and data['audio_codec']: % if data['audio_decision'] == 'transcode': @@ -187,7 +193,7 @@ DOCUMENTATION :: END % else: Subtitle  Direct Play (${data['subtitle_codec'].upper()}) % endif - % elif data['media_type'] != 'track': + % else: Subtitle  None % endif @@ -195,20 +201,23 @@ DOCUMENTATION :: END
- % if data['media_type'] != 'photo':
Quality: - ${data['quality_profile'] if data['media_type'] != 'track' else ''} + ${data['quality_profile']}
% if data['ip_address']: - IP: ${data['ip_address']} (${data['location'].upper()} - ${data['bandwidth']} kbps) + IP: ${data['ip_address']} + % if data['media_type'] != 'photo' and 'location' in data: + (${data['location'].upper()} - ${data['bandwidth']} kbps) + % endif % else: IP: N/A % endif
+ % if data['media_type'] != 'photo':
ETA: @@ -225,8 +234,8 @@ DOCUMENTATION :: END
+ % endif
- % endif % if (data['media_type'] == 'movie' or data['media_type'] == 'episode' or data['media_type'] == 'track') and data['rating_key']: @@ -284,13 +293,13 @@ DOCUMENTATION :: END S${data['parent_media_index']} · E${data['media_index']} % elif data['media_type'] == 'movie': - ${data['year']} + ${data['year']} % elif data['media_type'] == 'track': - ${data['parent_title']} + ${data['parent_title']} % elif data['media_type'] == 'photo': - ${data['title']} + ${data['title']} % else: - ${data['year']} + ${data['year']} % endif % endif diff --git a/data/interfaces/default/index.html b/data/interfaces/default/index.html index 7bd2b56b..28bb23ba 100644 --- a/data/interfaces/default/index.html +++ b/data/interfaces/default/index.html @@ -292,7 +292,7 @@ } else { ts += 'Stream  Direct Play
'; } - if (s.video_decision != '' && s.media_type != 'photo') { + if (['movie', 'episode', 'clip'].indexOf(s.media_type) > -1 && s.video_decision != '') { switch (s.video_resolution.toLowerCase()) { case 'sd': var v_res = 'SD'; @@ -320,8 +320,12 @@ } else { ts += 'Video  Direct Play (' + s.video_codec.toUpperCase() + ' ' + v_res + ')
'; } + } else if (s.media_type == 'photo') { + ts += 'Video  Direct Play (' + s.width + 'x' + s.height + ')
'; + } else { + ts += 'Video  None
'; } - if (s.audio_codec) { + if (['movie', 'episode', 'clip', 'track'].indexOf(s.media_type) > -1 && s.audio_codec) { var a_codec = (s.audio_codec == 'truehd') ? 'TrueHD' : s.audio_codec.toUpperCase(); var sa_codec = (s.stream_audio_codec == 'truehd') ? 'TrueHD' : s.stream_audio_codec.toUpperCase(); if (s.audio_decision == 'transcode') { @@ -335,7 +339,7 @@ else { ts += 'Audio  None
'; } - if (s.subtitles) { + if (['movie', 'episode', 'clip'].indexOf(s.media_type) > -1 && s.subtitles == '1') { if (s.subtitle_decision == 'transcode') { ts += 'Subtitle  Transcode (' + s.subtitle_codec.toUpperCase() + ' → ' + s.stream_subtitle_codec.toUpperCase() + ')'; } else if (s.subtitle_decision == 'copy') { @@ -345,13 +349,13 @@ } else { ts += 'Subtitle  Direct Play (' + s.subtitle_codec.toUpperCase() + ')'; } - } else if (s.media_type != 'track') { + } else { ts += 'Subtitle  None'; } $('#transcode-state-' + key).html(ts); // update the stream quality profile and bandwidth - $('#stream-quality-' + key).html((s.media_type != 'track') ? s.quality_profile : ''); + $('#stream-quality-' + key).html(s.quality_profile); $('#stream-bandwidth-' + key).html(s.bandwidth); // update the stream progress times diff --git a/plexpy/common.py b/plexpy/common.py index a30a30b4..f151fa3b 100644 --- a/plexpy/common.py +++ b/plexpy/common.py @@ -75,20 +75,28 @@ AUDIO_CHANNELS = {'1': 'Mono', '8': '7.1' } -QUALITY_PROFILES = {20000: '20 Mbps 1080p', - 12000: '12 Mbps 1080p', - 10000: '10 Mbps 1080p', - 8000: '8 Mbps 1080p', - 4000: '4 Mbps 720p', - 3000: '3 Mbps 720p', - 2000: '2 Mbps 720p', - 1500: '1.5 Mbps 480p', - 720: '720 kbps', - 320: '320 kbps', - 208: '208 kbps', - 96: '96 kbps', - 64: '64 kbps' - } +VIDEO_QUALITY_PROFILES = {20000: '20 Mbps 1080p', + 12000: '12 Mbps 1080p', + 10000: '10 Mbps 1080p', + 8000: '8 Mbps 1080p', + 4000: '4 Mbps 720p', + 3000: '3 Mbps 720p', + 2000: '2 Mbps 720p', + 1500: '1.5 Mbps 480p', + 720: '720 kbps', + 320: '320 kbps', + 208: '208 kbps', + 96: '96 kbps', + 64: '64 kbps' + } + +AUDIO_QUALITY_PROFILES = {512: '512 kbps', + 320: '320 kbps', + 256: '256 kbps', + 192: '192 kbps', + 128: '128 kbps', + 96: '96 kbps' + } SCHEDULER_LIST = ['Check GitHub for updates', 'Check for active sessions', diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py index f5e85d99..2fd09a7e 100644 --- a/plexpy/pmsconnect.py +++ b/plexpy/pmsconnect.py @@ -1509,13 +1509,26 @@ class PmsConnect(object): video_bitrate = helpers.cast_to_int(source_video_details.get('video_bitrate')) try: - quailtiy_bitrate = min(b for b in common.QUALITY_PROFILES if stream_video_bitrate <= b <= video_bitrate) - quality_profile = common.QUALITY_PROFILES[quailtiy_bitrate] + quailtiy_bitrate = min(b for b in common.VIDEO_QUALITY_PROFILES if stream_video_bitrate <= b <= video_bitrate) + quality_profile = common.VIDEO_QUALITY_PROFILES[quailtiy_bitrate] except ValueError: quality_profile = 'Original' + elif media_type == 'track' and 'stream_audio_bitrate' in audio_details: + stream_audio_bitrate = helpers.cast_to_int(audio_details['stream_audio_bitrate']) + audio_bitrate = helpers.cast_to_int(source_audio_details['audio_bitrate']) + + try: + quailtiy_bitrate = min(b for b in common.AUDIO_QUALITY_PROFILES if stream_audio_bitrate <= b <= audio_bitrate) + quality_profile = common.AUDIO_QUALITY_PROFILES[quailtiy_bitrate] + except ValueError: + quality_profile = 'Original' + + elif media_type == 'photo': + quality_profile = 'Original' + else: - quality_profile = '' + quality_profile = 'Unknown' # Entire session output (single dict for backwards compatibility) session_output = {'session_key': helpers.get_xml_attr(session, 'sessionKey'),