mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 00:47:08 -05:00 
			
		
		
		
	[YoutubeDL] Allow downloading multiple formats with ,
This commit is contained in:
		@@ -809,28 +809,29 @@ class YoutubeDL(object):
 | 
			
		||||
        if req_format in ('-1', 'all'):
 | 
			
		||||
            formats_to_download = formats
 | 
			
		||||
        else:
 | 
			
		||||
            # We can accept formats requested in the format: 34/5/best, we pick
 | 
			
		||||
            # the first that is available, starting from left
 | 
			
		||||
            req_formats = req_format.split('/')
 | 
			
		||||
            for rf in req_formats:
 | 
			
		||||
                if re.match(r'.+?\+.+?', rf) is not None:
 | 
			
		||||
                    # Two formats have been requested like '137+139'
 | 
			
		||||
                    format_1, format_2 = rf.split('+')
 | 
			
		||||
                    formats_info = (self.select_format(format_1, formats),
 | 
			
		||||
                        self.select_format(format_2, formats))
 | 
			
		||||
                    if all(formats_info):
 | 
			
		||||
                        selected_format = {
 | 
			
		||||
                            'requested_formats': formats_info,
 | 
			
		||||
                            'format': rf,
 | 
			
		||||
                            'ext': formats_info[0]['ext'],
 | 
			
		||||
                        }
 | 
			
		||||
            for rfstr in req_format.split(','):
 | 
			
		||||
                # We can accept formats requested in the format: 34/5/best, we pick
 | 
			
		||||
                # the first that is available, starting from left
 | 
			
		||||
                req_formats = rfstr.split('/')
 | 
			
		||||
                for rf in req_formats:
 | 
			
		||||
                    if re.match(r'.+?\+.+?', rf) is not None:
 | 
			
		||||
                        # Two formats have been requested like '137+139'
 | 
			
		||||
                        format_1, format_2 = rf.split('+')
 | 
			
		||||
                        formats_info = (self.select_format(format_1, formats),
 | 
			
		||||
                            self.select_format(format_2, formats))
 | 
			
		||||
                        if all(formats_info):
 | 
			
		||||
                            selected_format = {
 | 
			
		||||
                                'requested_formats': formats_info,
 | 
			
		||||
                                'format': rf,
 | 
			
		||||
                                'ext': formats_info[0]['ext'],
 | 
			
		||||
                            }
 | 
			
		||||
                        else:
 | 
			
		||||
                            selected_format = None
 | 
			
		||||
                    else:
 | 
			
		||||
                        selected_format = None
 | 
			
		||||
                else:
 | 
			
		||||
                    selected_format = self.select_format(rf, formats)
 | 
			
		||||
                if selected_format is not None:
 | 
			
		||||
                    formats_to_download = [selected_format]
 | 
			
		||||
                    break
 | 
			
		||||
                        selected_format = self.select_format(rf, formats)
 | 
			
		||||
                    if selected_format is not None:
 | 
			
		||||
                        formats_to_download.append(selected_format)
 | 
			
		||||
                        break
 | 
			
		||||
        if not formats_to_download:
 | 
			
		||||
            raise ExtractorError('requested format not available',
 | 
			
		||||
                                 expected=True)
 | 
			
		||||
 
 | 
			
		||||
@@ -218,7 +218,7 @@ def parseOpts(overrideArguments=None):
 | 
			
		||||
 | 
			
		||||
    video_format.add_option('-f', '--format',
 | 
			
		||||
            action='store', dest='format', metavar='FORMAT', default=None,
 | 
			
		||||
            help='video format code, specify the order of preference using slashes: -f 22/17/18 .  -f mp4 , -f m4a and  -f flv  are also supported. You can also use the special names "best", "bestvideo", "bestaudio", "worst", "worstvideo" and "worstaudio". By default, youtube-dl will pick the best quality.')
 | 
			
		||||
            help='video format code, specify the order of preference using slashes: -f 22/17/18 .  -f mp4 , -f m4a and  -f flv  are also supported. You can also use the special names "best", "bestvideo", "bestaudio", "worst", "worstvideo" and "worstaudio". By default, youtube-dl will pick the best quality. Use commas to download multiple audio formats, such as  -f  136/137/mp4/bestvideo,140/m4a/bestaudio')
 | 
			
		||||
    video_format.add_option('--all-formats',
 | 
			
		||||
            action='store_const', dest='format', help='download all available video formats', const='all')
 | 
			
		||||
    video_format.add_option('--prefer-free-formats',
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user