diff options
| author | Philipp Hagemeister <phihag@phihag.de> | 2014-08-25 10:18:01 +0200 | 
|---|---|---|
| committer | Philipp Hagemeister <phihag@phihag.de> | 2014-08-25 10:18:01 +0200 | 
| commit | 8d31fa3cce47a7c9d932b872e277cf89eb3441a2 (patch) | |
| tree | a1abbaef522fa03d13828622c364516fff4bfc02 /youtube_dl/postprocessor/execafterdownload.py | |
| parent | 1f06864e9ab102b19569f13e2a02e18921a26511 (diff) | |
[execafterdownload] Simplify (#3569)
Diffstat (limited to 'youtube_dl/postprocessor/execafterdownload.py')
| -rw-r--r-- | youtube_dl/postprocessor/execafterdownload.py | 48 | 
1 files changed, 20 insertions, 28 deletions
| diff --git a/youtube_dl/postprocessor/execafterdownload.py b/youtube_dl/postprocessor/execafterdownload.py index e6f3cdfd2..08419a3d4 100644 --- a/youtube_dl/postprocessor/execafterdownload.py +++ b/youtube_dl/postprocessor/execafterdownload.py @@ -1,39 +1,31 @@  from __future__ import unicode_literals -from .common import PostProcessor -from ..utils import PostProcessingError +  import subprocess -import shlex + +from .common import PostProcessor +from ..utils import ( +    shlex_quote, +    PostProcessingError, +)  class ExecAfterDownloadPP(PostProcessor): -    def __init__(self, downloader=None, verboseOutput=None, commandString=None): +    def __init__(self, downloader=None, verboseOutput=None, exec_cmd=None):          self.verboseOutput = verboseOutput -        self.commandString = commandString +        self.exec_cmd = exec_cmd      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)) +        cmd = self.exec_cmd +        if not '{}' in cmd: +            cmd += ' {}' -        return None, information  # by default, keep file and do nothing +        cmd = cmd.replace('{}', shlex_quote(information['filepath'])) + +        self._downloader.to_screen("[exec] Executing command: %s" % cmd) +        retCode = subprocess.call(cmd, shell=True) +        if retCode != 0: +            raise PostProcessingError( +                'Command returned error code %d' % retCode) +        return None, information  # by default, keep file and do nothing -class PostProcessingExecError(PostProcessingError): -    pass | 
