aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/postprocessor/execafterdownload.py
diff options
context:
space:
mode:
Diffstat (limited to 'youtube_dl/postprocessor/execafterdownload.py')
-rw-r--r--youtube_dl/postprocessor/execafterdownload.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/youtube_dl/postprocessor/execafterdownload.py b/youtube_dl/postprocessor/execafterdownload.py
new file mode 100644
index 000000000..08419a3d4
--- /dev/null
+++ b/youtube_dl/postprocessor/execafterdownload.py
@@ -0,0 +1,31 @@
+from __future__ import unicode_literals
+
+import subprocess
+
+from .common import PostProcessor
+from ..utils import (
+ shlex_quote,
+ PostProcessingError,
+)
+
+
+class ExecAfterDownloadPP(PostProcessor):
+ def __init__(self, downloader=None, verboseOutput=None, exec_cmd=None):
+ self.verboseOutput = verboseOutput
+ self.exec_cmd = exec_cmd
+
+ def run(self, information):
+ cmd = self.exec_cmd
+ if not '{}' in cmd:
+ cmd += ' {}'
+
+ 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
+