mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	 ad54c9130e
			
		
	
	ad54c9130e
	
	
	
		
			
			Closes #6288, Closes #7197, Closes #7265, Closes #7353, Closes #5773 Authored by: mikf, freezboltz, pukkandan
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # 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))
 |