1
0
Fork 0
mirror of https://github.com/yt-dlp/yt-dlp.git synced 2025-03-09 12:50:23 -05:00
This commit is contained in:
c-basalt 2025-02-19 15:50:14 -05:00
parent 8e78e77d22
commit af4f71c44a
3 changed files with 11 additions and 4 deletions

View file

@ -941,6 +941,7 @@ def parse_options(argv=None):
'sleep_interval': opts.sleep_interval, 'sleep_interval': opts.sleep_interval,
'max_sleep_interval': opts.max_sleep_interval, 'max_sleep_interval': opts.max_sleep_interval,
'sleep_interval_subtitles': opts.sleep_interval_subtitles, 'sleep_interval_subtitles': opts.sleep_interval_subtitles,
'jsi_preference': opts.jsi_preference,
'external_downloader': opts.external_downloader, 'external_downloader': opts.external_downloader,
'download_ranges': opts.download_ranges, 'download_ranges': opts.download_ranges,
'force_keyframes_at_cuts': opts.force_keyframes_at_cuts, 'force_keyframes_at_cuts': opts.force_keyframes_at_cuts,

View file

@ -107,6 +107,11 @@ def __init__(
if unsupported_features := self._features - _ALL_FEATURES: if unsupported_features := self._features - _ALL_FEATURES:
raise ExtractorError(f'Unsupported features: {unsupported_features}, allowed features: {_ALL_FEATURES}') raise ExtractorError(f'Unsupported features: {unsupported_features}, allowed features: {_ALL_FEATURES}')
user_prefs = self._downloader.params.get('jsi_preference', [])
for invalid_key in [jsi_key for jsi_key in user_prefs if jsi_key not in _JSI_HANDLERS]:
self.report_warning(f'`{invalid_key}` is not a valid JSI, ignoring preference setting')
user_prefs.remove(invalid_key)
jsi_keys = [key for key in get_jsi_keys(only_include or _JSI_HANDLERS) if key not in get_jsi_keys(exclude)] jsi_keys = [key for key in get_jsi_keys(only_include or _JSI_HANDLERS) if key not in get_jsi_keys(exclude)]
self.write_debug(f'Allowed JSI keys: {jsi_keys}') self.write_debug(f'Allowed JSI keys: {jsi_keys}')
handler_classes = [_JSI_HANDLERS[key] for key in jsi_keys handler_classes = [_JSI_HANDLERS[key] for key in jsi_keys
@ -120,7 +125,10 @@ def __init__(
self._downloader, url=self._url, timeout=timeout, features=self._features, self._downloader, url=self._url, timeout=timeout, features=self._features,
user_agent=user_agent, **jsi_params.get(cls.JSI_KEY, {}), user_agent=user_agent, **jsi_params.get(cls.JSI_KEY, {}),
) for cls in handler_classes} ) for cls in handler_classes}
self.preferences: set[JSIPreference] = {order_to_pref(preferred_order, 100)} | _JSI_PREFERENCES
self.preferences: set[JSIPreference] = {
order_to_pref(user_prefs, 10000), order_to_pref(preferred_order, 100)} | _JSI_PREFERENCES
self._fallback_jsi = get_jsi_keys(handler_classes) if fallback_jsi == 'all' else get_jsi_keys(fallback_jsi) self._fallback_jsi = get_jsi_keys(handler_classes) if fallback_jsi == 'all' else get_jsi_keys(fallback_jsi)
self._is_test = self._downloader.params.get('test', False) self._is_test = self._downloader.params.get('test', False)

View file

@ -1142,9 +1142,7 @@ def _alias_callback(option, opt_str, value, parser, opts, nargs):
'--jsi-preference', '--jsi-preference',
metavar='JSI', dest='jsi_preference', default=[], type='str', action='callback', metavar='JSI', dest='jsi_preference', default=[], type='str', action='callback',
callback=_list_from_options_callback, callback=_list_from_options_callback,
help=( help='Preferred JS interpreters to use during extraction. Can be given as comma-separated values.')
'Preferred JS interpreters to use during extraction. Can be given as comma-separated values.')
)
verbosity = optparse.OptionGroup(parser, 'Verbosity and Simulation Options') verbosity = optparse.OptionGroup(parser, 'Verbosity and Simulation Options')
verbosity.add_option( verbosity.add_option(