Add detailed stream info to notification options

This commit is contained in:
JonnyWong16 2017-02-25 22:30:47 -08:00
commit 992f0baf93
5 changed files with 240 additions and 53 deletions

View file

@ -67,4 +67,19 @@ SCHEDULER_LIST = ['Check GitHub for updates',
'Refresh Plex server name',
'Backup PlexPy database',
'Backup PlexPy config'
]
]
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'
}

View file

@ -437,26 +437,57 @@ def build_media_notify_params(notify_action=None, session=None, timeline=None, *
'transcode_decision': transcode_decision,
'video_decision': session.get('video_decision',''),
'audio_decision': session.get('audio_decision',''),
'subtitle_decision': session.get('subtitle_decision',''),
'quality_profile': session.get('quality_profile',''),
'optimized_version': session.get('optimized_version',''),
'stream_local': session.get('local', ''),
'stream_location': session.get('location', ''),
'stream_bandwidth': session.get('bandwidth', ''),
'stream_container': session.get('stream_container', ''),
'stream_bitrate': session.get('stream_bitrate', ''),
'stream_aspect_ratio': session.get('stream_aspect_ratio', ''),
'stream_video_codec': session.get('stream_video_codec', ''),
'stream_video_bitrate': session.get('stream_video_bitrate', ''),
'stream_video_framerate': session.get('stream_video_framerate', ''),
'stream_video_resolution': session.get('stream_video_resolution', ''),
'stream_video_height': session.get('stream_height', ''),
'stream_video_width': session.get('stream_width', ''),
'stream_video_language': session.get('stream_video_language', ''),
'stream_video_language_code': session.get('stream_video_language_code', ''),
'stream_audio_bitrate': session.get('stream_audio_bitrate', ''),
'stream_audio_bitrate_mode': session.get('stream_audio_bitrate_mode', ''),
'stream_audio_codec': session.get('stream_audio_codec', ''),
'stream_audio_channels': session.get('stream_audio_channels', ''),
'stream_audio_language': session.get('stream_audio_language', ''),
'stream_audio_language_code': session.get('stream_audio_language_code', ''),
'stream_subtitle_codec': session.get('stream_subtitle_codec', ''),
'stream_subtitle_container': session.get('stream_subtitle_container', ''),
'stream_subtitle_format': session.get('stream_subtitle_format', ''),
'stream_subtitle_language': session.get('stream_subtitle_language', ''),
'stream_subtitle_language_code': session.get('stream_subtitle_language_code', ''),
'stream_subtitle_location': session.get('stream_subtitle_location', ''),
'transcode_container': session.get('transcode_container',''),
'transcode_video_codec': session.get('transcode_video_codec',''),
'transcode_video_width': session.get('transcode_width',''),
'transcode_video_height': session.get('transcode_height',''),
'transcode_audio_codec': session.get('transcode_audio_codec',''),
'transcode_audio_channels': session.get('transcode_audio_channels',''),
'transcode_hardware': session.get('transcode_hardware',''),
'session_key': session.get('session_key',''),
'transcode_key': session.get('transcode_key',''),
'session_id': session.get('session_id',''),
'user_id': session.get('user_id',''),
'machine_id': session.get('machine_id',''),
# Metadata parameters
# Source metadata parameters
'media_type': metadata['media_type'],
'container': session.get('container', media_info.get('container','')),
'aspect_ratio': session.get('aspect_ratio', media_info.get('aspect_ratio','')),
'video_codec': session.get('video_codec', media_info.get('video_codec','')),
'video_bitrate': session.get('bitrate', media_info.get('bitrate','')),
'video_framerate': session.get('video_framerate', media_info.get('video_framerate','')),
'video_resolution': session.get('video_resolution', media_info.get('video_resolution','')),
'video_width': session.get('width', media_info.get('width','')),
'video_height': session.get('height', media_info.get('height','')),
'video_resolution': session.get('video_resolution', media_info.get('video_resolution','')),
'video_framerate': session.get('video_framerate', media_info.get('video_framerate','')),
'aspect_ratio': session.get('aspect_ratio', media_info.get('aspect_ratio','')),
'audio_codec': session.get('audio_codec', media_info.get('audio_codec','')),
'audio_channels': session.get('audio_channels', media_info.get('audio_channels','')),
'title': full_title,

View file

@ -967,11 +967,6 @@ class PmsConnect(object):
media_info_list = []
media_items = metadata_main.getElementsByTagName('Media')
for item in media_items:
if helpers.get_xml_attr(item, 'optimizedForStreaming'):
optimized_version = 1
else:
optimized_version = 0
media_info = {'id': helpers.get_xml_attr(item, 'id'),
'container': helpers.get_xml_attr(item, 'container'),
'bitrate': helpers.get_xml_attr(item, 'bitrate'),
@ -984,8 +979,7 @@ class PmsConnect(object):
'audio_codec': helpers.get_xml_attr(item, 'audioCodec'),
'audio_channels': helpers.get_xml_attr(item, 'audioChannels'),
'file': helpers.get_xml_attr(item.getElementsByTagName('Part')[0], 'file'),
'file_size': helpers.get_xml_attr(item.getElementsByTagName('Part')[0], 'size'),
'optimized_version': optimized_version
'file_size': helpers.get_xml_attr(item.getElementsByTagName('Part')[0], 'size')
}
media_info_list.append(media_info)
@ -1221,7 +1215,8 @@ class PmsConnect(object):
'transcode_protocol': helpers.get_xml_attr(transcode_info, 'protocol'),
'transcode_hardware': transcode_hardware,
'audio_decision': helpers.get_xml_attr(transcode_info, 'audioDecision'),
'video_decision': helpers.get_xml_attr(transcode_info, 'videoDecision')
'video_decision': helpers.get_xml_attr(transcode_info, 'videoDecision'),
'subtitle_decision': helpers.get_xml_attr(transcode_info, 'subtitleDecision')
}
else:
transcode_details = {'transcode_key': '',
@ -1237,7 +1232,8 @@ class PmsConnect(object):
'transcode_protocol': '',
'transcode_hardware': 0,
'audio_decision': 'direct play',
'video_decision': 'direct play'
'video_decision': 'direct play',
'subtitle_decision': ''
}
# Figure out which version is being played
@ -1267,7 +1263,7 @@ class PmsConnect(object):
video_details = {'stream_video_bitrate': helpers.get_xml_attr(video_stream_info, 'bitrate'),
'stream_video_language': helpers.get_xml_attr(video_stream_info, 'language'),
'stream_video_language_code': helpers.get_xml_attr(video_stream_info, 'languageCode'),
'stream_video_decision': helpers.get_xml_attr(video_stream_info, 'decision')
'stream_video_decision': helpers.get_xml_attr(video_stream_info, 'decision') or 'direct play'
}
if audio_stream_info:
@ -1275,7 +1271,7 @@ class PmsConnect(object):
'stream_audio_bitrate_mode': helpers.get_xml_attr(audio_stream_info, 'bitrateMode'),
'stream_audio_language': helpers.get_xml_attr(audio_stream_info, 'language'),
'stream_audio_language_code': helpers.get_xml_attr(audio_stream_info, 'languageCode'),
'stream_audio_decision': helpers.get_xml_attr(audio_stream_info, 'decision')
'stream_audio_decision': helpers.get_xml_attr(audio_stream_info, 'decision') or 'direct play'
}
if subtitle_stream_info:
@ -1297,19 +1293,37 @@ class PmsConnect(object):
else:
bif_thumb = ''
# Check if it is an optimized version
if helpers.get_xml_attr(stream_media_parts_info, 'optimizedForStreaming'):
optimized_version = 1
else:
optimized_version = 0
# Get the quality profile
if video_details:
quality_profile = common.QUALITY_PROFILES.get(video_details['stream_video_bitrate'], 'Original')
else:
quality_profile = ''
transcode_decision = helpers.get_xml_attr(stream_media_parts_info, 'decision')
if transcode_decision == 'directplay':
transcode_decision = 'direct play'
# Check if it is an optimized version
stream_details = {'stream_container': helpers.get_xml_attr(stream_media_info, 'container'),
'stream_bitrate': helpers.get_xml_attr(stream_media_info, 'bitrate'),
'stream_aspect_ratio': helpers.get_xml_attr(stream_media_info, 'aspectRatio'),
'stream_audio_codec': helpers.get_xml_attr(stream_media_info, 'audioCodec'),
'stream_audio_channels': helpers.get_xml_attr(stream_media_info, 'audioChannels'),
'stream_video_codec': helpers.get_xml_attr(stream_media_info, 'videoCodec'),
'stream_video_resolution': helpers.get_xml_attr(stream_media_info, 'videoResolution'),
'stream_video_framerate': helpers.get_xml_attr(stream_media_info, 'videoFrameRate'),
'stream_aspect_ratio': helpers.get_xml_attr(stream_media_info, 'aspectRatio'),
'stream_height': helpers.get_xml_attr(stream_media_info, 'height'),
'stream_width': helpers.get_xml_attr(stream_media_info, 'width'),
'stream_video_resolution': helpers.get_xml_attr(stream_media_info, 'videoResolution'),
'stream_video_height': helpers.get_xml_attr(stream_media_info, 'height'),
'stream_video_width': helpers.get_xml_attr(stream_media_info, 'width'),
'stream_duration': helpers.get_xml_attr(stream_media_info, 'duration'),
'transcode_decision': helpers.get_xml_attr(stream_media_info, 'decision'),
'transcode_decision': transcode_decision,
'optimized_version': optimized_version,
'quality_profile': quality_profile,
'indexes': 1 if indexes == 'sd' else 0,
'bif_thumb': bif_thumb,
'subtitles': 1 if subtitle_details else 0