[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 @@
compat_subprocess_get_DEVNULL, compat_subprocess_get_DEVNULL,
encodeArgument, encodeArgument,
encodeFilename, encodeFilename,
get_exe_version,
is_outdated_version, is_outdated_version,
PostProcessingError, PostProcessingError,
prepend_extension, prepend_extension,
@ -19,23 +20,6 @@
) )
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): class FFmpegPostProcessorError(PostProcessingError):
pass pass
@ -61,7 +45,7 @@ def check_version(self):
@staticmethod @staticmethod
def get_versions(): def get_versions():
programs = ['avprobe', 'avconv', 'ffmpeg', 'ffprobe'] 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 @property
def _executable(self): def _executable(self):

View file

@ -1472,6 +1472,25 @@ def check_executable(exe, args=[]):
return exe 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): class PagedList(object):
def __len__(self): def __len__(self):
# This is only useful for tests # This is only useful for tests