Make 'best' format only match non-DASH formats (closes #5554)
[youtube-dl] / youtube_dl / YoutubeDL.py
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