Merge pull request #5556 from jaimeMF/best-format-nodash
authorSergey M. <dstftw@gmail.com>
Thu, 30 Apr 2015 14:57:02 +0000 (19:57 +0500)
committerSergey M. <dstftw@gmail.com>
Thu, 30 Apr 2015 14:57:02 +0000 (19:57 +0500)
Make 'best' format only match non-DASH formats (closes #5554)

test/test_YoutubeDL.py
youtube_dl/YoutubeDL.py

index bb4a65ee1825105263eeb3667c6f1731f5c2238b..82b827536d746246d3241fd856f749945cf6d561 100644 (file)
@@ -237,7 +237,7 @@ class TestFormatSelection(unittest.TestCase):
             f2['url'] = 'url:' + f2id
 
             info_dict = _make_result([f1, f2], extractor='youtube')
-            ydl = YDL()
+            ydl = YDL({'format': 'best/bestvideo'})
             yie = YoutubeIE(ydl)
             yie._sort_formats(info_dict['formats'])
             ydl.process_ie_result(info_dict)
@@ -245,7 +245,7 @@ class TestFormatSelection(unittest.TestCase):
             self.assertEqual(downloaded['format_id'], f1id)
 
             info_dict = _make_result([f2, f1], extractor='youtube')
-            ydl = YDL()
+            ydl = YDL({'format': 'best/bestvideo'})
             yie = YoutubeIE(ydl)
             yie._sort_formats(info_dict['formats'])
             ydl.process_ie_result(info_dict)
index 827c88e0d9ebb3821d2c4e6a5ec38a0c90c390ba..eee9c0154351c1aa0fd2d77dcd5ee90fa0bd2aaf 100755 (executable)
@@ -915,7 +915,14 @@ class YoutubeDL(object):
             return None
 
         if format_spec == 'best' or format_spec is None:
-            return available_formats[-1]
+            audiovideo_formats = [
+                f for f in available_formats
+                if f.get('vcodec') != 'none' and f.get('acodec') != 'none']
+            if audiovideo_formats:
+                return audiovideo_formats[-1]
+            # for audio only urls, 'best' selects the best audio format
+            elif all(f.get('acodec') != 'none' for f in available_formats):
+                return available_formats[-1]
         elif format_spec == 'worst':
             audiovideo_formats = [
                 f for f in available_formats