youtube-dl

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

commit 5f9b83944da7c531f82ace0ce9275c2661e7187e
parent f6735be4da1da24be3a2d90461069d192900838a
Author: Philipp Hagemeister <phihag@phihag.de>
Date:   Sat,  6 Dec 2014 12:14:26 +0100

[ffmpeg] Improve version check and call it from hls (Fixes #4377)

Diffstat:
Mtest/test_utils.py | 6++++++
Myoutube_dl/downloader/hls.py | 4++++
Myoutube_dl/postprocessor/ffmpeg.py | 6+++---
Myoutube_dl/utils.py | 2+-
4 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/test/test_utils.py b/test/test_utils.py @@ -48,6 +48,7 @@ from youtube_dl.utils import ( intlist_to_bytes, args_to_str, parse_filesize, + version_tuple, ) @@ -381,5 +382,10 @@ class TestUtil(unittest.TestCase): self.assertEqual(parse_filesize('1.2Tb'), 1200000000000) self.assertEqual(parse_filesize('1,24 KB'), 1240) + def test_version_tuple(self): + self.assertEqual(version_tuple('1'), (1,)) + self.assertEqual(version_tuple('10.23.344'), (10, 23, 344)) + self.assertEqual(version_tuple('10-6'), (10, 6)) # avconv style + if __name__ == '__main__': unittest.main() diff --git a/youtube_dl/downloader/hls.py b/youtube_dl/downloader/hls.py @@ -4,6 +4,7 @@ import os import re import subprocess +from ..postprocessor.ffmpeg import FFmpegPostProcessor from .common import FileDownloader from ..utils import ( compat_urlparse, @@ -32,6 +33,9 @@ class HlsFD(FileDownloader): return False cmd = [program] + args + ffpp = FFmpegPostProcessor(downloader=self) + ffpp.check_version() + retval = subprocess.call(cmd) if retval == 0: fsize = os.path.getsize(encodeFilename(tmpfilename)) diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py @@ -37,11 +37,11 @@ class FFmpegPostProcessor(PostProcessor): if not self._executable: raise FFmpegPostProcessorError('ffmpeg or avconv not found. Please install one.') - REQUIRED_VERSION = '1.0' + required_version = '10-0' if self._uses_avconv() else '1.0' if is_outdated_version( - self._versions[self._executable], REQUIRED_VERSION): + self._versions[self._executable], required_version): warning = 'Your copy of %s is outdated, update %s to version %s or newer if you encounter any errors.' % ( - self._executable, self._executable, REQUIRED_VERSION) + self._executable, self._executable, required_version) if self._downloader: self._downloader.report_warning(warning) diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py @@ -1502,7 +1502,7 @@ def limit_length(s, length): def version_tuple(v): - return [int(e) for e in v.split('.')] + return tuple(int(e) for e in re.split(r'[-.]', v)) def is_outdated_version(version, limit, assume_new=True):