aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2021-05-18 19:15:11 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2021-05-18 19:31:17 +0530
commitff2751ac9cc7d4150797d3207da9b566396bc796 (patch)
tree8ea0298d036380984c32eacf979f83056552ed35
parentabcdd12b26762c101e79f739557d4fbb1d83cc56 (diff)
downloadhypervideo-pre-ff2751ac9cc7d4150797d3207da9b566396bc796.tar.lz
hypervideo-pre-ff2751ac9cc7d4150797d3207da9b566396bc796.tar.xz
hypervideo-pre-ff2751ac9cc7d4150797d3207da9b566396bc796.zip
[youtube] Always extract `maxresdefault` thumbnail
Fixes: https://github.com/ytdl-org/youtube-dl/issues/29049
-rw-r--r--yt_dlp/YoutubeDL.py3
-rw-r--r--yt_dlp/extractor/youtube.py22
2 files changed, 17 insertions, 8 deletions
diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py
index c2c270237..55bc49a9e 100644
--- a/yt_dlp/YoutubeDL.py
+++ b/yt_dlp/YoutubeDL.py
@@ -1944,7 +1944,8 @@ class YoutubeDL(object):
t.get('preference') if t.get('preference') is not None else -1,
t.get('width') if t.get('width') is not None else -1,
t.get('height') if t.get('height') is not None else -1,
- t.get('id') if t.get('id') is not None else '', t.get('url')))
+ t.get('id') if t.get('id') is not None else '',
+ t.get('url')))
for i, t in enumerate(thumbnails):
t['url'] = sanitize_url(t['url'])
if t.get('width') and t.get('height'):
diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py
index 1d50264b6..145b89a6e 100644
--- a/yt_dlp/extractor/youtube.py
+++ b/yt_dlp/extractor/youtube.py
@@ -2169,16 +2169,24 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
if 'maxresdefault' in thumbnail_url:
thumbnail_url = thumbnail_url.split('?')[0]
thumbnails.append({
- 'height': int_or_none(thumbnail.get('height')),
'url': thumbnail_url,
+ 'height': int_or_none(thumbnail.get('height')),
'width': int_or_none(thumbnail.get('width')),
+ 'preference': 1 if 'maxresdefault' in thumbnail_url else -1
})
- if thumbnails:
- break
- else:
- thumbnail = search_meta(['og:image', 'twitter:image'])
- if thumbnail:
- thumbnails = [{'url': thumbnail}]
+ thumbnail_url = search_meta(['og:image', 'twitter:image'])
+ if thumbnail_url:
+ thumbnails.append({
+ 'url': thumbnail_url,
+ 'preference': 1 if 'maxresdefault' in thumbnail_url else -1
+ })
+ # All videos have a maxresdefault thumbnail, but sometimes it does not appear in the webpage
+ # See: https://github.com/ytdl-org/youtube-dl/issues/29049
+ thumbnails.append({
+ 'url': 'https://i.ytimg.com/vi/%s/maxresdefault.jpg' % video_id,
+ 'preference': 1,
+ })
+ self._remove_duplicate_formats(thumbnails)
category = microformat.get('category') or search_meta('genre')
channel_id = video_details.get('channelId') \