mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	
							
								
								
									
										44
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								README.md
									
									
									
									
									
								
							| @@ -725,7 +725,7 @@ You can also fork the project on GitHub and run your fork's [build workflow](.gi | |||||||
|                                     screen, optionally prefixed with when to |                                     screen, optionally prefixed with when to | ||||||
|                                     print it, separated by a ":". Supported |                                     print it, separated by a ":". Supported | ||||||
|                                     values of "WHEN" are the same as that of |                                     values of "WHEN" are the same as that of | ||||||
|                                     --use-postprocessor, and "video" (default). |                                     --use-postprocessor (default: video). | ||||||
|                                     Implies --quiet. Implies --simulate unless |                                     Implies --quiet. Implies --simulate unless | ||||||
|                                     --no-simulate or later stages of WHEN are |                                     --no-simulate or later stages of WHEN are | ||||||
|                                     used. This option can be used multiple times |                                     used. This option can be used multiple times | ||||||
| @@ -979,18 +979,18 @@ You can also fork the project on GitHub and run your fork's [build workflow](.gi | |||||||
|     --ffmpeg-location PATH          Location of the ffmpeg binary; either the |     --ffmpeg-location PATH          Location of the ffmpeg binary; either the | ||||||
|                                     path to the binary or its containing directory |                                     path to the binary or its containing directory | ||||||
|     --exec [WHEN:]CMD               Execute a command, optionally prefixed with |     --exec [WHEN:]CMD               Execute a command, optionally prefixed with | ||||||
|                                     when to execute it (after_move if |                                     when to execute it, separated by a ":". | ||||||
|                                     unspecified), separated by a ":". Supported |                                     Supported values of "WHEN" are the same as | ||||||
|                                     values of "WHEN" are the same as that of |                                     that of --use-postprocessor (default: | ||||||
|                                     --use-postprocessor. Same syntax as the |                                     after_move). Same syntax as the output | ||||||
|                                     output template can be used to pass any |                                     template can be used to pass any field as | ||||||
|                                     field as arguments to the command. After |                                     arguments to the command. After download, an | ||||||
|                                     download, an additional field "filepath" |                                     additional field "filepath" that contains | ||||||
|                                     that contains the final path of the |                                     the final path of the downloaded file is | ||||||
|                                     downloaded file is also available, and if no |                                     also available, and if no fields are passed, | ||||||
|                                     fields are passed, %(filepath)q is appended |                                     %(filepath)q is appended to the end of the | ||||||
|                                     to the end of the command. This option can |                                     command. This option can be used multiple | ||||||
|                                     be used multiple times |                                     times | ||||||
|     --no-exec                       Remove any previously defined --exec |     --no-exec                       Remove any previously defined --exec | ||||||
|     --convert-subs FORMAT           Convert the subtitles to another format |     --convert-subs FORMAT           Convert the subtitles to another format | ||||||
|                                     (currently supported: ass, lrc, srt, vtt) |                                     (currently supported: ass, lrc, srt, vtt) | ||||||
| @@ -1028,14 +1028,16 @@ You can also fork the project on GitHub and run your fork's [build workflow](.gi | |||||||
|                                     postprocessor is invoked. It can be one of |                                     postprocessor is invoked. It can be one of | ||||||
|                                     "pre_process" (after video extraction), |                                     "pre_process" (after video extraction), | ||||||
|                                     "after_filter" (after video passes filter), |                                     "after_filter" (after video passes filter), | ||||||
|                                     "before_dl" (before each video download), |                                     "video" (after --format; before | ||||||
|                                     "post_process" (after each video download; |                                     --print/--output), "before_dl" (before each | ||||||
|                                     default), "after_move" (after moving video |                                     video download), "post_process" (after each | ||||||
|                                     file to it's final locations), "after_video" |                                     video download; default), "after_move" | ||||||
|                                     (after downloading and processing all |                                     (after moving video file to it's final | ||||||
|                                     formats of a video), or "playlist" (at end |                                     locations), "after_video" (after downloading | ||||||
|                                     of playlist). This option can be used |                                     and processing all formats of a video), or | ||||||
|                                     multiple times to add different postprocessors |                                     "playlist" (at end of playlist). This option | ||||||
|  |                                     can be used multiple times to add different | ||||||
|  |                                     postprocessors | ||||||
| 
 | 
 | ||||||
| ## SponsorBlock Options: | ## SponsorBlock Options: | ||||||
| Make chapter entries for, or remove various segments (sponsor, | Make chapter entries for, or remove various segments (sponsor, | ||||||
|   | |||||||
| @@ -2977,6 +2977,16 @@ class YoutubeDL: | |||||||
| 
 | 
 | ||||||
|         # Does nothing under normal operation - for backward compatibility of process_info |         # Does nothing under normal operation - for backward compatibility of process_info | ||||||
|         self.post_extract(info_dict) |         self.post_extract(info_dict) | ||||||
|  | 
 | ||||||
|  |         def replace_info_dict(new_info): | ||||||
|  |             nonlocal info_dict | ||||||
|  |             if new_info == info_dict: | ||||||
|  |                 return | ||||||
|  |             info_dict.clear() | ||||||
|  |             info_dict.update(new_info) | ||||||
|  | 
 | ||||||
|  |         new_info, _ = self.pre_process(info_dict, 'video') | ||||||
|  |         replace_info_dict(new_info) | ||||||
|         self._num_downloads += 1 |         self._num_downloads += 1 | ||||||
| 
 | 
 | ||||||
|         # info_dict['_filename'] needs to be set for backward compatibility |         # info_dict['_filename'] needs to be set for backward compatibility | ||||||
| @@ -3090,13 +3100,6 @@ class YoutubeDL: | |||||||
|                for link_type, should_write in write_links.items()): |                for link_type, should_write in write_links.items()): | ||||||
|             return |             return | ||||||
| 
 | 
 | ||||||
|         def replace_info_dict(new_info): |  | ||||||
|             nonlocal info_dict |  | ||||||
|             if new_info == info_dict: |  | ||||||
|                 return |  | ||||||
|             info_dict.clear() |  | ||||||
|             info_dict.update(new_info) |  | ||||||
| 
 |  | ||||||
|         new_info, files_to_move = self.pre_process(info_dict, 'before_dl', files_to_move) |         new_info, files_to_move = self.pre_process(info_dict, 'before_dl', files_to_move) | ||||||
|         replace_info_dict(new_info) |         replace_info_dict(new_info) | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -277,6 +277,20 @@ def create_parser(): | |||||||
|             out_dict[key] = out_dict.get(key, []) + [val] if append else val |             out_dict[key] = out_dict.get(key, []) + [val] if append else val | ||||||
|         setattr(parser.values, option.dest, out_dict) |         setattr(parser.values, option.dest, out_dict) | ||||||
| 
 | 
 | ||||||
|  |     def when_prefix(default): | ||||||
|  |         return { | ||||||
|  |             'default': {}, | ||||||
|  |             'type': 'str', | ||||||
|  |             'action': 'callback', | ||||||
|  |             'callback': _dict_from_options_callback, | ||||||
|  |             'callback_kwargs': { | ||||||
|  |                 'allowed_keys': '|'.join(map(re.escape, POSTPROCESS_WHEN)), | ||||||
|  |                 'default_key': default, | ||||||
|  |                 'multiple_keys': False, | ||||||
|  |                 'append': True, | ||||||
|  |             }, | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|     parser = _YoutubeDLOptionParser() |     parser = _YoutubeDLOptionParser() | ||||||
|     alias_group = optparse.OptionGroup(parser, 'Aliases') |     alias_group = optparse.OptionGroup(parser, 'Aliases') | ||||||
|     Formatter = string.Formatter() |     Formatter = string.Formatter() | ||||||
| @@ -1086,28 +1100,16 @@ def create_parser(): | |||||||
|         help='Do not download the video but write all related files (Alias: --no-download)') |         help='Do not download the video but write all related files (Alias: --no-download)') | ||||||
|     verbosity.add_option( |     verbosity.add_option( | ||||||
|         '-O', '--print', |         '-O', '--print', | ||||||
|         metavar='[WHEN:]TEMPLATE', dest='forceprint', default={}, type='str', |         metavar='[WHEN:]TEMPLATE', dest='forceprint', **when_prefix('video'), | ||||||
|         action='callback', callback=_dict_from_options_callback, |         help=( | ||||||
|         callback_kwargs={ |  | ||||||
|             'allowed_keys': 'video|' + '|'.join(map(re.escape, POSTPROCESS_WHEN)), |  | ||||||
|             'default_key': 'video', |  | ||||||
|             'multiple_keys': False, |  | ||||||
|             'append': True, |  | ||||||
|         }, help=( |  | ||||||
|             'Field name or output template to print to screen, optionally prefixed with when to print it, separated by a ":". ' |             'Field name or output template to print to screen, optionally prefixed with when to print it, separated by a ":". ' | ||||||
|             'Supported values of "WHEN" are the same as that of --use-postprocessor, and "video" (default). ' |             'Supported values of "WHEN" are the same as that of --use-postprocessor (default: video). ' | ||||||
|             'Implies --quiet. Implies --simulate unless --no-simulate or later stages of WHEN are used. ' |             'Implies --quiet. Implies --simulate unless --no-simulate or later stages of WHEN are used. ' | ||||||
|             'This option can be used multiple times')) |             'This option can be used multiple times')) | ||||||
|     verbosity.add_option( |     verbosity.add_option( | ||||||
|         '--print-to-file', |         '--print-to-file', | ||||||
|         metavar='[WHEN:]TEMPLATE FILE', dest='print_to_file', default={}, type='str', nargs=2, |         metavar='[WHEN:]TEMPLATE FILE', dest='print_to_file', nargs=2, **when_prefix('video'), | ||||||
|         action='callback', callback=_dict_from_options_callback, |         help=( | ||||||
|         callback_kwargs={ |  | ||||||
|             'allowed_keys': 'video|' + '|'.join(map(re.escape, POSTPROCESS_WHEN)), |  | ||||||
|             'default_key': 'video', |  | ||||||
|             'multiple_keys': False, |  | ||||||
|             'append': True, |  | ||||||
|         }, help=( |  | ||||||
|             'Append given template to the file. The values of WHEN and TEMPLATE are same as that of --print. ' |             'Append given template to the file. The values of WHEN and TEMPLATE are same as that of --print. ' | ||||||
|             'FILE uses the same syntax as the output template. This option can be used multiple times')) |             'FILE uses the same syntax as the output template. This option can be used multiple times')) | ||||||
|     verbosity.add_option( |     verbosity.add_option( | ||||||
| @@ -1629,16 +1631,10 @@ def create_parser(): | |||||||
|         help='Location of the ffmpeg binary; either the path to the binary or its containing directory') |         help='Location of the ffmpeg binary; either the path to the binary or its containing directory') | ||||||
|     postproc.add_option( |     postproc.add_option( | ||||||
|         '--exec', |         '--exec', | ||||||
|         metavar='[WHEN:]CMD', dest='exec_cmd', default={}, type='str', |         metavar='[WHEN:]CMD', dest='exec_cmd', **when_prefix('after_move'), | ||||||
|         action='callback', callback=_dict_from_options_callback, |         help=( | ||||||
|         callback_kwargs={ |             'Execute a command, optionally prefixed with when to execute it, separated by a ":". ' | ||||||
|             'allowed_keys': '|'.join(map(re.escape, POSTPROCESS_WHEN)), |             'Supported values of "WHEN" are the same as that of --use-postprocessor (default: after_move). ' | ||||||
|             'default_key': 'after_move', |  | ||||||
|             'multiple_keys': False, |  | ||||||
|             'append': True, |  | ||||||
|         }, help=( |  | ||||||
|             'Execute a command, optionally prefixed with when to execute it (after_move if unspecified), separated by a ":". ' |  | ||||||
|             'Supported values of "WHEN" are the same as that of --use-postprocessor. ' |  | ||||||
|             'Same syntax as the output template can be used to pass any field as arguments to the command. ' |             'Same syntax as the output template can be used to pass any field as arguments to the command. ' | ||||||
|             'After download, an additional field "filepath" that contains the final path of the downloaded file ' |             'After download, an additional field "filepath" that contains the final path of the downloaded file ' | ||||||
|             'is also available, and if no fields are passed, %(filepath)q is appended to the end of the command. ' |             'is also available, and if no fields are passed, %(filepath)q is appended to the end of the command. ' | ||||||
| @@ -1714,7 +1710,8 @@ def create_parser(): | |||||||
|             'ARGS are a semicolon ";" delimited list of NAME=VALUE. ' |             'ARGS are a semicolon ";" delimited list of NAME=VALUE. ' | ||||||
|             'The "when" argument determines when the postprocessor is invoked. ' |             'The "when" argument determines when the postprocessor is invoked. ' | ||||||
|             'It can be one of "pre_process" (after video extraction), "after_filter" (after video passes filter), ' |             'It can be one of "pre_process" (after video extraction), "after_filter" (after video passes filter), ' | ||||||
|             '"before_dl" (before each video download), "post_process" (after each video download; default), ' |             '"video" (after --format; before --print/--output), "before_dl" (before each video download), ' | ||||||
|  |             '"post_process" (after each video download; default), ' | ||||||
|             '"after_move" (after moving video file to it\'s final locations), ' |             '"after_move" (after moving video file to it\'s final locations), ' | ||||||
|             '"after_video" (after downloading and processing all formats of a video), ' |             '"after_video" (after downloading and processing all formats of a video), ' | ||||||
|             'or "playlist" (at end of playlist). ' |             'or "playlist" (at end of playlist). ' | ||||||
|   | |||||||
| @@ -3395,7 +3395,7 @@ def qualities(quality_ids): | |||||||
|     return q |     return q | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| POSTPROCESS_WHEN = ('pre_process', 'after_filter', 'before_dl', 'post_process', 'after_move', 'after_video', 'playlist') | POSTPROCESS_WHEN = ('pre_process', 'after_filter', 'video', 'before_dl', 'post_process', 'after_move', 'after_video', 'playlist') | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| DEFAULT_OUTTMPL = { | DEFAULT_OUTTMPL = { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan