diff options
author | Sergey M․ <dstftw@gmail.com> | 2015-05-30 16:04:44 +0600 |
---|---|---|
committer | Sergey M․ <dstftw@gmail.com> | 2015-05-30 16:04:44 +0600 |
commit | 181c7053e377700c1615bdff2b0fb19235762c57 (patch) | |
tree | e48ff64905f267c77b0747474c6a0657a505e37a /youtube_dl/YoutubeDL.py | |
parent | 4d454c5e4b7ecfae97ff109e05453f43d7cea0a2 (diff) |
[YoutubeDL] Make sure all formats have unique format_id
Diffstat (limited to 'youtube_dl/YoutubeDL.py')
-rwxr-xr-x | youtube_dl/YoutubeDL.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index d1953c18f..21d247f23 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -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'], |