Browse Source

[YoutubeDL] format spec: fix handling of '/' with ','

When using 'bestvideo/best,bestaudio', 'bestvideo/best' must be set as the current_selector (instead of appending it to the selectors), otherwise when it gets the ',' it would append 'None' to the selectors.
master
Jaime Marquínez Ferrándiz 10 years ago
parent
commit
f5f4a27a96
2 changed files with 9 additions and 2 deletions
  1. 8
      test/test_YoutubeDL.py
  2. 3
      youtube_dl/YoutubeDL.py

8
test/test_YoutubeDL.py

@ -253,6 +253,14 @@ class TestFormatSelection(unittest.TestCase):
downloaded = ydl.downloaded_info_dicts[0]
self.assertEqual(downloaded['format_id'], '38')
info_dict = _make_result(list(formats_order), extractor='youtube')
ydl = YDL({'format': 'bestvideo/best,bestaudio'})
yie = YoutubeIE(ydl)
yie._sort_formats(info_dict['formats'])
ydl.process_ie_result(info_dict)
downloaded_ids = [info['format_id'] for info in ydl.downloaded_info_dicts]
self.assertEqual(downloaded_ids, ['137', '141'])
info_dict = _make_result(list(formats_order), extractor='youtube')
ydl = YDL({'format': '(bestvideo[ext=mp4],bestvideo[ext=webm])+bestaudio'})
yie = YoutubeIE(ydl)

3
youtube_dl/YoutubeDL.py

@ -958,8 +958,7 @@ class YoutubeDL(object):
elif string == '/':
first_choice = current_selector
second_choice = _parse_format_selection(tokens, inside_choice=True)
current_selector = None
selectors.append(FormatSelector(PICKFIRST, (first_choice, second_choice), []))
current_selector = FormatSelector(PICKFIRST, (first_choice, second_choice), [])
elif string == '[':
if not current_selector:
current_selector = FormatSelector(SINGLE, 'best', [])

Loading…
Cancel
Save