mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 22:55:18 +00:00 
			
		
		
		
	[YoutubeDL] Make sure all formats have unique format_id
This commit is contained in:
		| @@ -1047,6 +1047,8 @@ class YoutubeDL(object): | ||||
|         if not formats: | ||||
|             raise ExtractorError('No video formats found!') | ||||
|  | ||||
|         formats_dict = {} | ||||
|  | ||||
|         # We check that all the formats have the format and format_id fields | ||||
|         for i, format in enumerate(formats): | ||||
|             if 'url' not in format: | ||||
| @@ -1054,6 +1056,18 @@ class YoutubeDL(object): | ||||
|  | ||||
|             if format.get('format_id') is None: | ||||
|                 format['format_id'] = compat_str(i) | ||||
|             format_id = format['format_id'] | ||||
|             if format_id not in formats_dict: | ||||
|                 formats_dict[format_id] = [] | ||||
|             formats_dict[format_id].append(format) | ||||
|  | ||||
|         # Make sure all formats have unique format_id | ||||
|         for format_id, ambiguous_formats in formats_dict.items(): | ||||
|             if len(ambiguous_formats) > 1: | ||||
|                 for i, format in enumerate(ambiguous_formats): | ||||
|                     format['format_id'] = '%s-%d' % (format_id, i) | ||||
|  | ||||
|         for i, format in enumerate(formats): | ||||
|             if format.get('format') is None: | ||||
|                 format['format'] = '{id} - {res}{note}'.format( | ||||
|                     id=format['format_id'], | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․