[YoutubeDL] Make sure all formats have unique format_id
This commit is contained in:
parent
4d454c5e4b
commit
181c7053e3
1 changed files with 14 additions and 0 deletions
|
@ -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…
Reference in a new issue