Make 'best' format only match non-DASH formats (closes #5554)

Otherwise it's impossible to only download non-DASH formats, for example `best[height=?480]/best` would download a DASH video if it's the only one with height=480, instead for falling back to the second format specifier.
For audio only urls (soundcloud, bandcamp ...), the best audio will be downloaded as before.
This commit is contained in:
Jaime Marquínez Ferrándiz 2015-04-29 22:53:18 +02:00
parent 965cb8d530
commit 8dd5418803
2 changed files with 10 additions and 3 deletions

View file

@ -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