diff options
-rw-r--r-- | settings.py | 24 | ||||
-rw-r--r-- | youtube/watch.py | 14 |
2 files changed, 30 insertions, 8 deletions
diff --git a/settings.py b/settings.py index c3c07e6..d8876e2 100644 --- a/settings.py +++ b/settings.py @@ -200,12 +200,17 @@ For security reasons, enabling this is not recommended.''', }), ('prefer_uni_sources', { - 'label': 'Prefer integrated sources', - 'type': bool, - 'default': False, + 'label': 'Use integrated sources', + 'type': int, + 'default': 1, 'comment': '', + 'options': [ + (0, 'Prefer not'), + (1, 'Prefer'), + (2, 'Always'), + ], 'category': 'playback', - 'description': 'If enabled and the default resolution is set to 360p or 720p, uses the unified (integrated) video files which contain audio and video, with buffering managed by the browser. If disabled, always uses the separate audio and video files through custom buffer management in av-merge via MediaSource.', + 'description': 'If set to Prefer or Always and the default resolution is set to 360p or 720p, uses the unified (integrated) video files which contain audio and video, with buffering managed by the browser. If set to prefer not, uses the separate audio and video files through custom buffer management in av-merge via MediaSource unless they are unavailable.', }), ('use_video_player', { @@ -326,7 +331,7 @@ Archive: https://archive.ph/OZQbN''', ('settings_version', { 'type': int, - 'default': 4, + 'default': 5, 'comment': '''Do not change, remove, or comment out this value, or else your settings may be lost or corrupted''', 'hidden': True, }), @@ -399,10 +404,19 @@ def upgrade_to_4(settings_dict): return new_settings +def upgrade_to_5(settings_dict): + new_settings = settings_dict.copy() + if 'prefer_uni_sources' in settings_dict: + new_settings['prefer_uni_sources'] = int(settings_dict['prefer_uni_sources']) + new_settings['settings_version'] = 5 + return new_settings + + upgrade_functions = { 1: upgrade_to_2, 2: upgrade_to_3, 3: upgrade_to_4, + 4: upgrade_to_5, } diff --git a/youtube/watch.py b/youtube/watch.py index 0d03250..ceb66ea 100644 --- a/youtube/watch.py +++ b/youtube/watch.py @@ -705,9 +705,17 @@ def get_watch_page(video_id=None): else: closer_to_target = 'pair' - using_pair_sources = ( - bool(pair_sources) and (not uni_sources or closer_to_target == 'pair') - ) + if settings.prefer_uni_sources == 2: + # Use uni sources unless there's no choice. + using_pair_sources = ( + bool(pair_sources) and (not uni_sources) + ) + else: + # Use the pair sources if they're closer to the desired resolution + using_pair_sources = ( + bool(pair_sources) + and (not uni_sources or closer_to_target == 'pair') + ) if using_pair_sources: video_height = pair_sources[pair_idx]['height'] video_width = pair_sources[pair_idx]['width'] |