youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit 9580711841d60426e2b888cde7b410ae7d512849
parent c30ae9594cea215f36a736f944acd67fcec39d0d
Author: Philipp Hagemeister <phihag@phihag.de>
Date:   Sun,  2 Nov 2014 10:50:30 +0100

[ffmpeg] Move version detection to utils

Diffstat:
Myoutube_dl/postprocessor/ffmpeg.py | 20++------------------
Myoutube_dl/utils.py | 19+++++++++++++++++++
2 files changed, 21 insertions(+), 18 deletions(-)

diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py @@ -11,6 +11,7 @@ from ..utils import ( compat_subprocess_get_DEVNULL, encodeArgument, encodeFilename, + get_exe_version, is_outdated_version, PostProcessingError, prepend_extension, @@ -19,23 +20,6 @@ from ..utils import ( ) -def get_version(executable): - """ Returns the version of the specified executable, - or False if the executable is not present """ - try: - out, err = subprocess.Popen( - [executable, '-version'], - stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate() - except OSError: - return False - firstline = out.partition(b'\n')[0].decode('ascii', 'ignore') - m = re.search(r'version\s+([0-9._-a-zA-Z]+)', firstline) - if not m: - return u'present' - else: - return m.group(1) - - class FFmpegPostProcessorError(PostProcessingError): pass @@ -61,7 +45,7 @@ class FFmpegPostProcessor(PostProcessor): @staticmethod def get_versions(): programs = ['avprobe', 'avconv', 'ffmpeg', 'ffprobe'] - return dict((program, get_version(program)) for program in programs) + return dict((p, get_exe_version(p, args=['-version'])) for p in programs) @property def _executable(self): diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py @@ -1472,6 +1472,25 @@ def check_executable(exe, args=[]): return exe +def get_exe_version(exe, args=['--version'], + version_re=r'version\s+([0-9._-a-zA-Z]+)', + unrecognized=u'present'): + """ Returns the version of the specified executable, + or False if the executable is not present """ + try: + out, err = subprocess.Popen( + [exe] + args, + stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate() + except OSError: + return False + firstline = out.partition(b'\n')[0].decode('ascii', 'ignore') + m = re.search(version_re, firstline) + if m: + return m.group(1) + else: + return unrecognized + + class PagedList(object): def __len__(self): # This is only useful for tests