Browse Source

Move check_executable into a helper ufnction

totalwebcasting
Philipp Hagemeister 11 years ago
parent
commit
d70ad093af
2 changed files with 12 additions and 7 deletions
  1. +2
    -7
      youtube_dl/postprocessor/ffmpeg.py
  2. +10
    -0
      youtube_dl/utils.py

+ 2
- 7
youtube_dl/postprocessor/ffmpeg.py View 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']:


+ 10
- 0
youtube_dl/utils.py View 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

Loading…
Cancel
Save