Sergey M․
7 years ago
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D
2 changed files with
24 additions and
13 deletions
-
test/test_YoutubeDL.py
-
youtube_dl/YoutubeDL.py
|
|
@ -466,12 +466,18 @@ class TestFormatSelection(unittest.TestCase): |
|
|
|
ydl = YDL({'simulate': True}) |
|
|
|
self.assertEqual(ydl._default_format_spec({}), 'bestvideo+bestaudio/best') |
|
|
|
|
|
|
|
ydl = YDL({'is_live': True}) |
|
|
|
self.assertEqual(ydl._default_format_spec({}), 'best/bestvideo+bestaudio') |
|
|
|
|
|
|
|
ydl = YDL({'simulate': True, 'is_live': True}) |
|
|
|
self.assertEqual(ydl._default_format_spec({}), 'bestvideo+bestaudio/best') |
|
|
|
|
|
|
|
ydl = YDL({'outtmpl': '-'}) |
|
|
|
self.assertEqual(ydl._default_format_spec({}), 'best') |
|
|
|
self.assertEqual(ydl._default_format_spec({}), 'best/bestvideo+bestaudio') |
|
|
|
|
|
|
|
ydl = YDL({}) |
|
|
|
self.assertEqual(ydl._default_format_spec({}, download=False), 'bestvideo+bestaudio/best') |
|
|
|
self.assertEqual(ydl._default_format_spec({'is_live': True}), 'best') |
|
|
|
self.assertEqual(ydl._default_format_spec({'is_live': True}), 'best/bestvideo+bestaudio') |
|
|
|
|
|
|
|
|
|
|
|
class TestYoutubeDL(unittest.TestCase): |
|
|
|
|
|
@ -1078,22 +1078,27 @@ class YoutubeDL(object): |
|
|
|
return _filter |
|
|
|
|
|
|
|
def _default_format_spec(self, info_dict, download=True): |
|
|
|
req_format_list = [] |
|
|
|
|
|
|
|
def can_have_partial_formats(): |
|
|
|
def can_merge(): |
|
|
|
merger = FFmpegMergerPP(self) |
|
|
|
return merger.available and merger.can_merge() |
|
|
|
|
|
|
|
def prefer_best(): |
|
|
|
if self.params.get('simulate', False): |
|
|
|
return True |
|
|
|
return False |
|
|
|
if not download: |
|
|
|
return True |
|
|
|
if self.params.get('outtmpl', DEFAULT_OUTTMPL) == '-': |
|
|
|
return False |
|
|
|
if self.params.get('outtmpl', DEFAULT_OUTTMPL) == '-': |
|
|
|
return True |
|
|
|
if info_dict.get('is_live'): |
|
|
|
return False |
|
|
|
merger = FFmpegMergerPP(self) |
|
|
|
return merger.available and merger.can_merge() |
|
|
|
if can_have_partial_formats(): |
|
|
|
req_format_list.append('bestvideo+bestaudio') |
|
|
|
req_format_list.append('best') |
|
|
|
return True |
|
|
|
if not can_merge(): |
|
|
|
return True |
|
|
|
return False |
|
|
|
|
|
|
|
req_format_list = ['bestvideo+bestaudio', 'best'] |
|
|
|
if prefer_best(): |
|
|
|
req_format_list.reverse() |
|
|
|
return '/'.join(req_format_list) |
|
|
|
|
|
|
|
def build_format_selector(self, format_spec): |
|
|
|