mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 03:47:07 -05:00 
			
		
		
		
	[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