diff --git a/test/test_utils.py b/test/test_utils.py index badab1370..5c7bf5175 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -48,6 +48,7 @@ intlist_to_bytes, args_to_str, parse_filesize, + version_tuple, ) @@ -381,5 +382,10 @@ def test_parse_filesize(self): 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 index 954beffd5..ad26cfa40 100644 --- a/youtube_dl/downloader/hls.py +++ b/youtube_dl/downloader/hls.py @@ -4,6 +4,7 @@ import re import subprocess +from ..postprocessor.ffmpeg import FFmpegPostProcessor from .common import FileDownloader from ..utils import ( compat_urlparse, @@ -32,6 +33,9 @@ def real_download(self, filename, info_dict): 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 index 9303b8378..965ded4c1 100644 --- a/youtube_dl/postprocessor/ffmpeg.py +++ b/youtube_dl/postprocessor/ffmpeg.py @@ -37,11 +37,11 @@ def check_version(self): 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 index 5efb4c59a..2e70cc791 100644 --- 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):