[YoutubeDL] Make sure all formats have unique format_id
This commit is contained in:
		
							parent
							
								
									4d454c5e4b
								
							
						
					
					
						commit
						181c7053e3
					
				| @ -1047,6 +1047,8 @@ class YoutubeDL(object): | |||||||
|         if not formats: |         if not formats: | ||||||
|             raise ExtractorError('No video formats found!') |             raise ExtractorError('No video formats found!') | ||||||
| 
 | 
 | ||||||
|  |         formats_dict = {} | ||||||
|  | 
 | ||||||
|         # We check that all the formats have the format and format_id fields |         # We check that all the formats have the format and format_id fields | ||||||
|         for i, format in enumerate(formats): |         for i, format in enumerate(formats): | ||||||
|             if 'url' not in format: |             if 'url' not in format: | ||||||
| @ -1054,6 +1056,18 @@ class YoutubeDL(object): | |||||||
| 
 | 
 | ||||||
|             if format.get('format_id') is None: |             if format.get('format_id') is None: | ||||||
|                 format['format_id'] = compat_str(i) |                 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: |             if format.get('format') is None: | ||||||
|                 format['format'] = '{id} - {res}{note}'.format( |                 format['format'] = '{id} - {res}{note}'.format( | ||||||
|                     id=format['format_id'], |                     id=format['format_id'], | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user