mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[devscripts/cli_to_api] Add script
This commit is contained in:
		
							
								
								
									
										48
									
								
								devscripts/cli_to_api.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								devscripts/cli_to_api.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| # 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.__dict__['create_parser'] = lambda: patched_parser | ||||
|     try: | ||||
|         return yt_dlp.parse_options(opts) | ||||
|     finally: | ||||
|         yt_dlp.options.__dict__['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)) | ||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan