mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-25 02:45:12 +00:00
6aaf96a3d6
Closes #10303 Authored by: bashonly, seproDev, jucor, c-basalt Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com> Co-authored-by: Julien Cornebise <julien@cornebise.com> Co-authored-by: c-basalt <117849907+c-basalt@users.noreply.github.com>
50 lines
1.4 KiB
Python
Executable file
50 lines
1.4 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
# Allow direct execution
|
|
import os
|
|
import sys
|
|
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
import yt_dlp
|
|
import yt_dlp.options
|
|
|
|
create_parser = yt_dlp.options.create_parser
|
|
|
|
|
|
def parse_patched_options(opts):
|
|
patched_parser = create_parser()
|
|
patched_parser.defaults.update({
|
|
'ignoreerrors': False,
|
|
'retries': 0,
|
|
'fragment_retries': 0,
|
|
'extract_flat': False,
|
|
'concat_playlist': 'never',
|
|
})
|
|
yt_dlp.options.create_parser = lambda: patched_parser
|
|
try:
|
|
return yt_dlp.parse_options(opts)
|
|
finally:
|
|
yt_dlp.options.create_parser = create_parser
|
|
|
|
|
|
default_opts = parse_patched_options([]).ydl_opts
|
|
|
|
|
|
def cli_to_api(opts, cli_defaults=False):
|
|
opts = (yt_dlp.parse_options if cli_defaults else parse_patched_options)(opts).ydl_opts
|
|
|
|
diff = {k: v for k, v in opts.items() if default_opts[k] != v}
|
|
if 'postprocessors' in diff:
|
|
diff['postprocessors'] = [pp for pp in diff['postprocessors']
|
|
if pp not in default_opts['postprocessors']]
|
|
return diff
|
|
|
|
|
|
if __name__ == '__main__':
|
|
from pprint import pprint
|
|
|
|
print('\nThe arguments passed translate to:\n')
|
|
pprint(cli_to_api(sys.argv[1:]))
|
|
print('\nCombining these with the CLI defaults gives:\n')
|
|
pprint(cli_to_api(sys.argv[1:], True))
|