diff --git a/data/interfaces/default/stream_data.html b/data/interfaces/default/stream_data.html index a6e9099e..3165723c 100644 --- a/data/interfaces/default/stream_data.html +++ b/data/interfaces/default/stream_data.html @@ -178,6 +178,11 @@ DOCUMENTATION :: END ${data['stream_video_framerate']} ${data['video_framerate']} + + Dynamic Range + ${data['stream_video_dynamic_range']} + ${data['video_dynamic_range']} + Aspect Ratio - diff --git a/plexpy/__init__.py b/plexpy/__init__.py index 4f4e1293..ea41a3fc 100644 --- a/plexpy/__init__.py +++ b/plexpy/__init__.py @@ -585,12 +585,14 @@ def dbcheck(): 'view_offset INTEGER DEFAULT 0, duration INTEGER, video_decision TEXT, audio_decision TEXT, ' 'transcode_decision TEXT, container TEXT, bitrate INTEGER, width INTEGER, height INTEGER, ' 'video_codec TEXT, video_bitrate INTEGER, video_resolution TEXT, video_width INTEGER, video_height INTEGER, ' - 'video_framerate TEXT, video_scan_type TEXT, video_full_resolution TEXT, aspect_ratio TEXT, ' + 'video_framerate TEXT, video_scan_type TEXT, video_full_resolution TEXT, ' + 'video_dynamic_range TEXT, aspect_ratio TEXT, ' 'audio_codec TEXT, audio_bitrate INTEGER, audio_channels INTEGER, subtitle_codec TEXT, ' 'stream_bitrate INTEGER, stream_video_resolution TEXT, quality_profile TEXT, ' 'stream_container_decision TEXT, stream_container TEXT, ' 'stream_video_decision TEXT, stream_video_codec TEXT, stream_video_bitrate INTEGER, stream_video_width INTEGER, ' 'stream_video_height INTEGER, stream_video_framerate TEXT, stream_video_scan_type TEXT, stream_video_full_resolution TEXT, ' + 'stream_video_dynamic_range TEXT, ' 'stream_audio_decision TEXT, stream_audio_codec TEXT, stream_audio_bitrate INTEGER, stream_audio_channels INTEGER, ' 'subtitles INTEGER, stream_subtitle_decision TEXT, stream_subtitle_codec TEXT, ' 'transcode_protocol TEXT, transcode_container TEXT, ' @@ -620,7 +622,7 @@ def dbcheck(): 'video_decision TEXT, audio_decision TEXT, transcode_decision TEXT, duration INTEGER DEFAULT 0, ' 'container TEXT, bitrate INTEGER, width INTEGER, height INTEGER, video_bitrate INTEGER, video_bit_depth INTEGER, ' 'video_codec TEXT, video_codec_level TEXT, video_width INTEGER, video_height INTEGER, video_resolution TEXT, ' - 'video_framerate TEXT, video_scan_type TEXT, video_full_resolution TEXT, aspect_ratio TEXT, ' + 'video_framerate TEXT, video_scan_type TEXT, video_full_resolution TEXT, video_dynamic_range TEXT, aspect_ratio TEXT, ' 'audio_bitrate INTEGER, audio_codec TEXT, audio_channels INTEGER, transcode_protocol TEXT, ' 'transcode_container TEXT, transcode_video_codec TEXT, transcode_audio_codec TEXT, ' 'transcode_audio_channels INTEGER, transcode_width INTEGER, transcode_height INTEGER, ' @@ -630,7 +632,7 @@ def dbcheck(): 'stream_container TEXT, stream_container_decision TEXT, stream_bitrate INTEGER, ' 'stream_video_decision TEXT, stream_video_bitrate INTEGER, stream_video_codec TEXT, stream_video_codec_level TEXT, ' 'stream_video_bit_depth INTEGER, stream_video_height INTEGER, stream_video_width INTEGER, stream_video_resolution TEXT, ' - 'stream_video_framerate TEXT, stream_video_scan_type TEXT, stream_video_full_resolution TEXT, ' + 'stream_video_framerate TEXT, stream_video_scan_type TEXT, stream_video_full_resolution TEXT, stream_video_dynamic_range TEXT, ' 'stream_audio_decision TEXT, stream_audio_codec TEXT, stream_audio_bitrate INTEGER, stream_audio_channels INTEGER, ' 'stream_subtitle_decision TEXT, stream_subtitle_codec TEXT, stream_subtitle_container TEXT, stream_subtitle_forced INTEGER, ' 'subtitles INTEGER, subtitle_codec TEXT, synced_version INTEGER, synced_version_profile TEXT, ' @@ -1203,6 +1205,18 @@ def dbcheck(): 'ALTER TABLE sessions ADD COLUMN stream_video_full_resolution TEXT' ) + # Upgrade sessions table from earlier versions + try: + c_db.execute('SELECT video_dynamic_range FROM sessions') + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table sessions.") + c_db.execute( + 'ALTER TABLE sessions ADD COLUMN video_dynamic_range TEXT' + ) + c_db.execute( + 'ALTER TABLE sessions ADD COLUMN stream_video_dynamic_range TEXT' + ) + # Upgrade session_history table from earlier versions try: c_db.execute('SELECT reference_id FROM session_history') @@ -1541,6 +1555,17 @@ def dbcheck(): 'ELSE stream_video_resolution || "p" END)' ) + # Upgrade session_history_media_info table from earlier versions + try: + c_db.execute('SELECT video_dynamic_range FROM session_history_media_info') + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table session_history_media_info.") + c_db.execute( + 'ALTER TABLE session_history_media_info ADD COLUMN video_dynamic_range TEXT ' + ) + c_db.execute( + 'ALTER TABLE session_history_media_info ADD COLUMN stream_video_dynamic_range TEXT ' + ) # Upgrade users table from earlier versions try: c_db.execute('SELECT do_notify FROM users') diff --git a/plexpy/activity_processor.py b/plexpy/activity_processor.py index 7bccda02..03df9fb5 100644 --- a/plexpy/activity_processor.py +++ b/plexpy/activity_processor.py @@ -78,6 +78,7 @@ class ActivityProcessor(object): 'video_framerate': session.get('video_framerate', ''), 'video_scan_type': session.get('video_scan_type', ''), 'video_full_resolution': session.get('video_full_resolution', ''), + 'video_dynamic_range': session.get('video_dynamic_range', ''), 'aspect_ratio': session.get('aspect_ratio', ''), 'audio_codec': session.get('audio_codec', ''), 'audio_bitrate': session.get('audio_bitrate', ''), @@ -110,6 +111,7 @@ class ActivityProcessor(object): 'stream_video_framerate': session.get('stream_video_framerate', ''), 'stream_video_scan_type': session.get('stream_video_scan_type', ''), 'stream_video_full_resolution': session.get('stream_video_full_resolution', ''), + 'stream_video_dynamic_range': session.get('stream_video_dynamic_range', ''), 'stream_audio_decision': session.get('stream_audio_decision', ''), 'stream_audio_codec': session.get('stream_audio_codec', ''), 'stream_audio_bitrate': session.get('stream_audio_bitrate', ''), @@ -353,6 +355,7 @@ class ActivityProcessor(object): 'video_framerate': session['video_framerate'], 'video_scan_type': session['video_scan_type'], 'video_full_resolution': session['video_full_resolution'], + 'video_dynamic_range': session['video_dynamic_range'], 'aspect_ratio': session['aspect_ratio'], 'audio_codec': session['audio_codec'], 'audio_bitrate': session['audio_bitrate'], @@ -387,6 +390,7 @@ class ActivityProcessor(object): 'stream_video_framerate': session['stream_video_framerate'], 'stream_video_scan_type': session['stream_video_scan_type'], 'stream_video_full_resolution': session['stream_video_full_resolution'], + 'stream_video_dynamic_range': session['stream_video_dynamic_range'], 'stream_audio_decision': session['stream_audio_decision'], 'stream_audio_codec': session['stream_audio_codec'], 'stream_audio_bitrate': session['stream_audio_bitrate'], diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py index ef925eb7..1e635e0f 100644 --- a/plexpy/datafactory.py +++ b/plexpy/datafactory.py @@ -878,11 +878,12 @@ class DataFactory(object): query = 'SELECT bitrate, video_full_resolution, ' \ 'optimized_version, optimized_version_profile, optimized_version_title, ' \ 'synced_version, synced_version_profile, ' \ - 'container, video_codec, video_bitrate, video_width, video_height, video_framerate, aspect_ratio, ' \ + 'container, video_codec, video_bitrate, video_width, video_height, video_framerate, ' \ + 'video_dynamic_range, aspect_ratio, ' \ 'audio_codec, audio_bitrate, audio_channels, subtitle_codec, ' \ 'stream_bitrate, stream_video_full_resolution, quality_profile, stream_container_decision, stream_container, ' \ 'stream_video_decision, stream_video_codec, stream_video_bitrate, stream_video_width, stream_video_height, ' \ - 'stream_video_framerate, ' \ + 'stream_video_framerate, stream_video_dynamic_range, ' \ 'stream_audio_decision, stream_audio_codec, stream_audio_bitrate, stream_audio_channels, ' \ 'subtitles, stream_subtitle_decision, stream_subtitle_codec, ' \ 'transcode_hw_decoding, transcode_hw_encoding, ' \ @@ -899,11 +900,12 @@ class DataFactory(object): query = 'SELECT bitrate, video_full_resolution, ' \ 'optimized_version, optimized_version_profile, optimized_version_title, ' \ 'synced_version, synced_version_profile, ' \ - 'container, video_codec, video_bitrate, video_width, video_height, video_framerate, aspect_ratio, ' \ + 'container, video_codec, video_bitrate, video_width, video_height, video_framerate, ' \ + 'video_dynamic_range, aspect_ratio, ' \ 'audio_codec, audio_bitrate, audio_channels, subtitle_codec, ' \ 'stream_bitrate, stream_video_full_resolution, quality_profile, stream_container_decision, stream_container, ' \ 'stream_video_decision, stream_video_codec, stream_video_bitrate, stream_video_width, stream_video_height, ' \ - 'stream_video_framerate, ' \ + 'stream_video_framerate, stream_video_dynamic_range, ' \ 'stream_audio_decision, stream_audio_codec, stream_audio_bitrate, stream_audio_channels, ' \ 'subtitles, stream_subtitle_decision, stream_subtitle_codec, ' \ 'transcode_hw_decoding, transcode_hw_encoding, ' \ @@ -950,6 +952,7 @@ class DataFactory(object): 'video_width': item['video_width'], 'video_height': item['video_height'], 'video_framerate': item['video_framerate'], + 'video_dynamic_range': item['video_dynamic_range'], 'aspect_ratio': item['aspect_ratio'], 'audio_codec': item['audio_codec'], 'audio_bitrate': item['audio_bitrate'], @@ -966,6 +969,7 @@ class DataFactory(object): 'stream_video_width': item['stream_video_width'], 'stream_video_height': item['stream_video_height'], 'stream_video_framerate': item['stream_video_framerate'], + 'stream_video_dynamic_range': item['stream_video_dynamic_range'], 'stream_audio_decision': item['stream_audio_decision'], 'stream_audio_codec': item['stream_audio_codec'], 'stream_audio_bitrate': item['stream_audio_bitrate'],