Move check_executable into a helper ufnction
authorPhilipp Hagemeister <phihag@phihag.de>
Tue, 7 Jan 2014 05:23:41 +0000 (06:23 +0100)
committerPhilipp Hagemeister <phihag@phihag.de>
Tue, 7 Jan 2014 05:23:41 +0000 (06:23 +0100)
youtube_dl/postprocessor/ffmpeg.py
youtube_dl/utils.py

index 91434d9701e3fdcee5e451a5d766a099c5290b91..a7fe5f346978bef4625fc86ac7b749ca200910b2 100644 (file)
@@ -7,6 +7,7 @@ import time
 from .common import AudioConversionError, PostProcessor
 
 from ..utils import (
+    check_executable,
     compat_subprocess_get_DEVNULL,
     encodeFilename,
     PostProcessingError,
@@ -27,14 +28,8 @@ class FFmpegPostProcessor(PostProcessor):
 
     @staticmethod
     def detect_executables():
-        def executable(exe):
-            try:
-                subprocess.Popen([exe, '-version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
-            except OSError:
-                return False
-            return exe
         programs = ['avprobe', 'avconv', 'ffmpeg', 'ffprobe']
-        return dict((program, executable(program)) for program in programs)
+        return dict((program, check_executable(program, ['-version'])) for program in programs)
 
     def run_ffmpeg_multiple_files(self, input_paths, out_path, opts):
         if not self._exes['ffmpeg'] and not self._exes['avconv']:
index a509f8e2f1b667ac43910b72bf4e30b27e64c355..73fe1ad0a3a27165d3dffc61927733beb9c5ed33 100644 (file)
@@ -1151,3 +1151,13 @@ def parse_duration(s):
 def prepend_extension(filename, ext):
     name, real_ext = os.path.splitext(filename) 
     return u'{0}.{1}{2}'.format(name, ext, real_ext)
+
+
+def check_executable(exe, args=[]):
+    """ Checks if the given binary is installed somewhere in PATH, and returns its name.
+    args can be a list of arguments for a short output (like -version) """
+    try:
+        subprocess.Popen([exe] + args, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
+    except OSError:
+        return False
+    return exe