diff options
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 4 | ||||
| -rw-r--r-- | youtube_dl/extractor/common.py | 2 | ||||
| -rw-r--r-- | youtube_dl/extractor/youtube.py | 11 | 
3 files changed, 14 insertions, 3 deletions
diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index e2b823f66..806e7b239 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -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)' diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 6e264f687..562e656e0 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -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, diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 8c7842ee8..e9bf39a00 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -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)  | 
