aboutsummaryrefslogtreecommitdiffstats
path: root/youtube/util.py
diff options
context:
space:
mode:
Diffstat (limited to 'youtube/util.py')
-rw-r--r--youtube/util.py38
1 files changed, 24 insertions, 14 deletions
diff --git a/youtube/util.py b/youtube/util.py
index e6f1961..ae948ae 100644
--- a/youtube/util.py
+++ b/youtube/util.py
@@ -542,21 +542,31 @@ class RateLimitedQueue(gevent.queue.Queue):
def download_thumbnail(save_directory, video_id):
- url = f"https://i.ytimg.com/vi/{video_id}/hq720.jpg"
save_location = os.path.join(save_directory, video_id + ".jpg")
- try:
- thumbnail = fetch_url(url, report_text="Saved thumbnail: " + video_id)
- except urllib.error.HTTPError as e:
- print("Failed to download thumbnail for " + video_id + ": " + str(e))
- return False
- try:
- f = open(save_location, 'wb')
- except FileNotFoundError:
- os.makedirs(save_directory, exist_ok=True)
- f = open(save_location, 'wb')
- f.write(thumbnail)
- f.close()
- return True
+ for quality in ('hq720.jpg', 'sddefault.jpg', 'hqdefault.jpg'):
+ url = f"https://i.ytimg.com/vi/{video_id}/{quality}"
+ try:
+ thumbnail = fetch_url(url, report_text="Saved thumbnail: " + video_id)
+ except FetchError as e:
+ if '404' in str(e):
+ continue
+ print("Failed to download thumbnail for " + video_id + ": " + str(e))
+ return False
+ except urllib.error.HTTPError as e:
+ if e.code == 404:
+ continue
+ print("Failed to download thumbnail for " + video_id + ": " + str(e))
+ return False
+ try:
+ f = open(save_location, 'wb')
+ except FileNotFoundError:
+ os.makedirs(save_directory, exist_ok=True)
+ f = open(save_location, 'wb')
+ f.write(thumbnail)
+ f.close()
+ return True
+ print("No thumbnail available for " + video_id)
+ return False
def download_thumbnails(save_directory, ids):