mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 10:27:07 -05:00 
			
		
		
		
	[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.
This commit is contained in:
		@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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', [])
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user