From 102c482f5e58ef634548b86337f88f2505cd18d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Sat, 21 Nov 2020 17:34:38 +0100 Subject: [PATCH] [reddit] skip invalid/failed gallery items (fixes #1127) --- gallery_dl/extractor/reddit.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/gallery_dl/extractor/reddit.py b/gallery_dl/extractor/reddit.py index 0be7f175..273ac05c 100644 --- a/gallery_dl/extractor/reddit.py +++ b/gallery_dl/extractor/reddit.py @@ -118,18 +118,25 @@ class RedditExtractor(Extractor): def _extract_gallery(self, submission): if submission["gallery_data"] is None: - self.log.warning("gallery '%s' was deleted", submission["id"]) + self.log.warning("gallery %s: deleted", submission["id"]) return meta = submission["media_metadata"] for item in submission["gallery_data"]["items"]: - src = meta[item["media_id"]]["s"] + data = meta[item["media_id"]] + if data["status"] != "valid" or "s" not in data: + self.log.warning( + "gallery %s: skipping item %s ('status: %s')", + submission["id"], item["media_id"], data.get("status")) + continue + src = data["s"] url = src.get("u") or src.get("gif") or src.get("mp4") if url: yield url.partition("?")[0].replace("/preview.", "/i.", 1) else: - self.log.error("Unable to get download URL for item '%s'", - item["media_id"]) + self.log.error( + "gallery %s: unable to fetch download URL for item %s", + submission["id"], item["media_id"]) self.log.debug(src) @@ -211,6 +218,10 @@ class RedditSubmissionExtractor(RedditExtractor): "pattern": r"https://i\.redd\.it/\w+\.gif", "count": 2, }), + # "failed" gallery item (#1127) + ("https://www.reddit.com/r/cosplay/comments/jvwaqr", { + "count": 1, + }), ("https://old.reddit.com/r/lavaporn/comments/2a00np/"), ("https://np.reddit.com/r/lavaporn/comments/2a00np/"), ("https://m.reddit.com/r/lavaporn/comments/2a00np/"),