aboutsummaryrefslogtreecommitdiffstats
path: root/youtube/subscriptions.py
diff options
context:
space:
mode:
Diffstat (limited to 'youtube/subscriptions.py')
-rw-r--r--youtube/subscriptions.py26
1 files changed, 20 insertions, 6 deletions
diff --git a/youtube/subscriptions.py b/youtube/subscriptions.py
index 0cb5e95..3326a51 100644
--- a/youtube/subscriptions.py
+++ b/youtube/subscriptions.py
@@ -1089,12 +1089,26 @@ def serve_subscription_thumbnail(thumbnail):
f.close()
return flask.Response(image, mimetype='image/jpeg')
- url = f"https://i.ytimg.com/vi/{video_id}/hq720.jpg"
- try:
- image = util.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))
- flask.abort(e.code)
+ image = None
+ for quality in ('hq720.jpg', 'sddefault.jpg', 'hqdefault.jpg'):
+ url = f"https://i.ytimg.com/vi/{video_id}/{quality}"
+ try:
+ image = util.fetch_url(url, report_text="Saved thumbnail: " + video_id)
+ break
+ except util.FetchError as e:
+ if '404' in str(e):
+ continue
+ print("Failed to download thumbnail for " + video_id + ": " + str(e))
+ flask.abort(500)
+ except urllib.error.HTTPError as e:
+ if e.code == 404:
+ continue
+ print("Failed to download thumbnail for " + video_id + ": " + str(e))
+ flask.abort(e.code)
+
+ if image is None:
+ flask.abort(404)
+
try:
f = open(thumbnail_path, 'wb')
except FileNotFoundError: