mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	Pass any field to --exec using similar syntax to output template
				
					
				
			Related: https://github.com/ytdl-org/youtube-dl/issues/28642
This commit is contained in:
		
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							| @@ -686,9 +686,14 @@ Then simply run `make`. You can also run `make yt-dlp` instead to compile only t | ||||
|                                      path to the binary or its containing | ||||
|                                      directory | ||||
|     --exec CMD                       Execute a command on the file after | ||||
|                                      downloading and post-processing, similar to | ||||
|                                      find's -exec syntax. Example: --exec 'adb | ||||
|                                      push {} /sdcard/Music/ && rm {}' | ||||
|                                      downloading and post-processing. Similar | ||||
|                                      syntax to the output template can be used | ||||
|                                      to pass any field as arguments to the | ||||
|                                      command. An additional field "filepath" | ||||
|                                      that contains the final path of the | ||||
|                                      downloaded file is also available. If no | ||||
|                                      fields are passed, "%(filepath)s" is | ||||
|                                      appended to the end of the command | ||||
|     --convert-subs FORMAT            Convert the subtitles to another format | ||||
|                                      (currently supported: srt|ass|vtt|lrc) | ||||
|                                      (Alias: --convert-subtitles) | ||||
|   | ||||
| @@ -1195,7 +1195,11 @@ def parseOpts(overrideArguments=None): | ||||
|     postproc.add_option( | ||||
|         '--exec', | ||||
|         metavar='CMD', dest='exec_cmd', | ||||
|         help='Execute a command on the file after downloading and post-processing, similar to find\'s -exec syntax. Example: --exec \'adb push {} /sdcard/Music/ && rm {}\'') | ||||
|         help=( | ||||
|             'Execute a command on the file after downloading and post-processing. ' | ||||
|             'Similar syntax to the output template can be used to pass any field as arguments to the command. ' | ||||
|             'An additional field "filepath" that contains the final path of the downloaded file is also available. ' | ||||
|             'If no fields are passed, "%(filepath)s" is appended to the end of the command')) | ||||
|     postproc.add_option( | ||||
|         '--convert-subs', '--convert-sub', '--convert-subtitles', | ||||
|         metavar='FORMAT', dest='convertsubtitles', default=None, | ||||
|   | ||||
| @@ -20,12 +20,13 @@ class ExecAfterDownloadPP(PostProcessor): | ||||
|     def pp_key(cls): | ||||
|         return 'Exec' | ||||
|  | ||||
|     def run(self, information): | ||||
|         cmd = self.exec_cmd | ||||
|         if '{}' not in cmd: | ||||
|             cmd += ' {}' | ||||
|  | ||||
|         cmd = cmd.replace('{}', compat_shlex_quote(information['filepath'])) | ||||
|     def run(self, info): | ||||
|         tmpl, info_copy = self._downloader.prepare_outtmpl(self.exec_cmd, info) | ||||
|         cmd = tmpl % info_copy | ||||
|         if cmd == self.exec_cmd:  # No replacements were made | ||||
|             if '{}' not in self.exec_cmd: | ||||
|                 self.exec_cmd += ' {}' | ||||
|             cmd = self.exec_cmd.replace('{}', compat_shlex_quote(info['filepath'])) | ||||
|  | ||||
|         self.to_screen('Executing command: %s' % cmd) | ||||
|         retCode = subprocess.call(encodeArgument(cmd), shell=True) | ||||
| @@ -33,4 +34,4 @@ class ExecAfterDownloadPP(PostProcessor): | ||||
|             raise PostProcessingError( | ||||
|                 'Command returned error code %d' % retCode) | ||||
|  | ||||
|         return [], information | ||||
|         return [], info | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan