mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	 6aaf96a3d6
			
		
	
	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>
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			51 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))
 |