1
0
mirror of https://github.com/l1ving/youtube-dl synced 2024-11-20 19:32:50 +08:00

[ffmpeg] Move version detection to utils

This commit is contained in:
Philipp Hagemeister 2014-11-02 10:50:30 +01:00
parent c30ae9594c
commit 9580711841
2 changed files with 21 additions and 18 deletions

View File

@ -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):

View File

@ -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