mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	Moved from os.system to subprocess.call
This commit is contained in:
		| @@ -1,36 +1,39 @@ | ||||
| # ExecAfterDownload written by AaronM / mcd1992. | ||||
| # If there are any issues with this postprocessor please contact me via github or admin@fgthou.se | ||||
|  | ||||
| import os, re, shlex | ||||
| from __future__ import unicode_literals | ||||
| from .common import PostProcessor | ||||
| from ..utils import PostProcessingError | ||||
| import subprocess | ||||
| import shlex | ||||
|  | ||||
| class ExecAfterDownload( object ): | ||||
|     _downloader = None | ||||
|  | ||||
|     def __init__( self, downloader = None, commandString = None ): | ||||
|         self._downloader = downloader | ||||
| class ExecAfterDownloadPP(PostProcessor): | ||||
|     def __init__(self, downloader=None, verboseOutput=None, commandString=None): | ||||
|         self.verboseOutput = verboseOutput | ||||
|         self.commandString = commandString | ||||
|  | ||||
|     def set_downloader( self, downloader ): | ||||
|         """Sets the downloader for this PP.""" | ||||
|         self._downloader = downloader | ||||
|     def run(self, information): | ||||
|         self.targetFile = information['filepath'].replace('\'', '\'\\\'\'')  # Replace single quotes with '\'' | ||||
|         self.commandList = shlex.split(self.commandString) | ||||
|         self.commandString = '' | ||||
|  | ||||
|     def run( self, information ): | ||||
|         self.targetFile = information["filepath"] | ||||
|         self.finalCommand = None; | ||||
|         # Replace all instances of '{}' with the file name and convert argument list to single string. | ||||
|         for index, arg in enumerate(self.commandList): | ||||
|             if(arg == '{}'): | ||||
|                 self.commandString += '\'' + self.targetFile + '\' ' | ||||
|             else: | ||||
|                 self.commandString += arg + ' ' | ||||
|  | ||||
|         if( re.search( '{}', self.commandString ) ): # Find and replace all occurrences of {} with the file name. | ||||
|             self.finalCommand = re.sub( "{}", '\'' + self.targetFile + '\'', self.commandString ) | ||||
|         else: | ||||
|             self.finalCommand = self.commandString + ' \'' + self.targetFile + '\'' | ||||
|         if self.targetFile not in self.commandString:  # Assume user wants the file appended to the end of the command if no {}'s were given. | ||||
|             self.commandString += '\'' + self.targetFile + '\'' | ||||
|  | ||||
|         if( self.finalCommand ): | ||||
|             print( "[exec] Executing command: " + self.finalCommand ) | ||||
|             os.system( self.finalCommand ) | ||||
|         else: | ||||
|             raise PostProcessingExecError( "Invalid syntax for --exec post processor" ) | ||||
|         print("[exec] Executing command: " + self.commandString) | ||||
|         self.retCode = subprocess.call(self.commandString, shell=True) | ||||
|         if(self.retCode < 0): | ||||
|             print("[exec] WARNING: Command exited with a negative return code, the process was killed externally. Your command may not of completed succesfully!") | ||||
|         elif(self.verboseOutput): | ||||
|             print("[exec] Command exited with return code: " + str(self.retCode)) | ||||
|  | ||||
|         return None, information  # by default, keep file and do nothing | ||||
|  | ||||
| class PostProcessingExecError( PostProcessingError ): | ||||
|  | ||||
| class PostProcessingExecError(PostProcessingError): | ||||
|     pass | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 mcd1992
					mcd1992