mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-11-25 19:52:11 +00:00
[ffmpeg] Move version detection to utils
This commit is contained in:
parent
c30ae9594c
commit
9580711841
2 changed files with 21 additions and 18 deletions
|
@ -11,6 +11,7 @@ from ..utils import (
|
||||||
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 @@ 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):
|
class FFmpegPostProcessorError(PostProcessingError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -61,7 +45,7 @@ class FFmpegPostProcessor(PostProcessor):
|
||||||
@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):
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue