[youtube] Correct handling when DASH manifest is not necessary to find all formats
This commit is contained in:
		| @@ -1333,7 +1333,9 @@ class YoutubeDL(object): | ||||
|         formats = info_dict.get('formats', [info_dict]) | ||||
|         idlen = max(len('format code'), | ||||
|                     max(len(f['format_id']) for f in formats)) | ||||
|         formats_s = [line(f, idlen) for f in formats] | ||||
|         formats_s = [ | ||||
|             line(f, idlen) for f in formats | ||||
|             if f.get('preference') is None or f['preference'] >= -1000] | ||||
|         if len(formats) > 1: | ||||
|             formats_s[0] += (' ' if self._format_note(formats[0]) else '') + '(worst)' | ||||
|             formats_s[-1] += (' ' if self._format_note(formats[-1]) else '') + '(best)' | ||||
|   | ||||
| @@ -92,6 +92,8 @@ class InfoExtractor(object): | ||||
|                                  by this field, regardless of all other values. | ||||
|                                  -1 for default (order by other properties), | ||||
|                                  -2 or smaller for less than default. | ||||
|                                  < -1000 to hide the format (if there is | ||||
|                                     another one which is strictly better) | ||||
|                     * language_preference  Is this in the correct requested | ||||
|                                  language? | ||||
|                                  10 if it's what the URL is about, | ||||
|   | ||||
| @@ -256,7 +256,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor): | ||||
|         '135': {'ext': 'mp4', 'height': 480, 'format_note': 'DASH video', 'acodec': 'none', 'preference': -40}, | ||||
|         '136': {'ext': 'mp4', 'height': 720, 'format_note': 'DASH video', 'acodec': 'none', 'preference': -40}, | ||||
|         '137': {'ext': 'mp4', 'height': 1080, 'format_note': 'DASH video', 'acodec': 'none', 'preference': -40}, | ||||
|         '138': {'ext': 'mp4', 'height': 2160, 'format_note': 'DASH video', 'acodec': 'none', 'preference': -40}, | ||||
|         '138': {'ext': 'mp4', 'format_note': 'DASH video', 'acodec': 'none', 'preference': -40},  # Height can vary (https://github.com/rg3/youtube-dl/issues/4559) | ||||
|         '160': {'ext': 'mp4', 'height': 144, 'format_note': 'DASH video', 'acodec': 'none', 'preference': -40}, | ||||
|         '264': {'ext': 'mp4', 'height': 1440, 'format_note': 'DASH video', 'acodec': 'none', 'preference': -40}, | ||||
|         '298': {'ext': 'mp4', 'height': 720, 'format_note': 'DASH video', 'acodec': 'none', 'preference': -40, 'fps': 60, 'vcodec': 'h264'}, | ||||
| @@ -736,6 +736,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor): | ||||
|                 'format_id': format_id, | ||||
|                 'url': video_url, | ||||
|                 'width': int_or_none(r.attrib.get('width')), | ||||
|                 'height': int_or_none(r.attrib.get('height')), | ||||
|                 'tbr': int_or_none(r.attrib.get('bandwidth'), 1000), | ||||
|                 'asr': int_or_none(r.attrib.get('audioSamplingRate')), | ||||
|                 'filesize': filesize, | ||||
| @@ -746,7 +747,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor): | ||||
|                     fo for fo in formats | ||||
|                     if fo['format_id'] == format_id) | ||||
|             except StopIteration: | ||||
|                 f.update(self._formats.get(format_id, {})) | ||||
|                 f.update(self._formats.get(format_id, {}).items()) | ||||
|                 formats.append(f) | ||||
|             else: | ||||
|                 existing_format.update(f) | ||||
| @@ -1040,6 +1041,12 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor): | ||||
|                     self.report_warning( | ||||
|                         'Skipping DASH manifest: %r' % e, video_id) | ||||
|                 else: | ||||
|                     # Hide the formats we found through non-DASH | ||||
|                     dash_keys = set(df['format_id'] for df in dash_formats) | ||||
|                     for f in formats: | ||||
|                         if f['format_id'] in dash_keys: | ||||
|                             f['format_id'] = 'nondash-%s' % f['format_id'] | ||||
|                             f['preference'] -= 10000 | ||||
|                     formats.extend(dash_formats) | ||||
|  | ||||
|         self._sort_formats(formats) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user