diff options
author | Philipp Hagemeister <phihag@phihag.de> | 2014-08-25 09:44:11 +0200 |
---|---|---|
committer | Philipp Hagemeister <phihag@phihag.de> | 2014-08-25 09:44:11 +0200 |
commit | 348ae0a79ee9cafc6e292ca01f09839900aa52e6 (patch) | |
tree | 49f319c798a53fdee4a4f6faca74f1d9f87b43d7 /youtube_dl/postprocessor/execafterdownload.py | |
parent | 528d455632a6bbc0d0adb867caf059188b7a4cbf (diff) | |
parent | 7833d941bb736a8dbd237f1c7bc268d671cabb68 (diff) |
Merge remote-tracking branch 'mcd1992/exec_after_download'
Diffstat (limited to 'youtube_dl/postprocessor/execafterdownload.py')
-rw-r--r-- | youtube_dl/postprocessor/execafterdownload.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/youtube_dl/postprocessor/execafterdownload.py b/youtube_dl/postprocessor/execafterdownload.py new file mode 100644 index 000000000..e6f3cdfd2 --- /dev/null +++ b/youtube_dl/postprocessor/execafterdownload.py @@ -0,0 +1,39 @@ +from __future__ import unicode_literals +from .common import PostProcessor +from ..utils import PostProcessingError +import subprocess +import shlex + + +class ExecAfterDownloadPP(PostProcessor): + def __init__(self, downloader=None, verboseOutput=None, commandString=None): + self.verboseOutput = verboseOutput + self.commandString = commandString + + def run(self, information): + self.targetFile = information['filepath'].replace('\'', '\'\\\'\'') # Replace single quotes with '\'' + self.commandList = shlex.split(self.commandString) + self.commandString = '' + + # 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 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 + '\'' + + 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): + pass |