From baf5d0e3c19f81cd74ebd411d7ed164aae2eaa22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Wed, 22 Jul 2020 23:56:07 +0200 Subject: [PATCH] [gfycat] skip malformed gfycat responses (closes #902) --- gallery_dl/extractor/gfycat.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gallery_dl/extractor/gfycat.py b/gallery_dl/extractor/gfycat.py index b4b0e49a..ac1bca3b 100644 --- a/gallery_dl/extractor/gfycat.py +++ b/gallery_dl/extractor/gfycat.py @@ -28,6 +28,9 @@ class GfycatExtractor(Extractor): def items(self): metadata = self.metadata() for gfycat in self.gfycats(): + if "gfyName" not in gfycat: + self.log.warning("Skipping '%s' (malformed)", gfycat["gfyId"]) + continue url = self._select_format(gfycat) gfycat.update(metadata) yield Message.Directory, gfycat @@ -118,6 +121,10 @@ class GfycatImageExtractor(GfycatExtractor): ("https://www.gfycat.com/foolishforkedabyssiniancat", { "pattern": "https://redgifs.com/watch/foolishforkedabyssiniancat", }), + # malformed API response (#902) + ("https://gfycat.com/illexcitablehairstreak", { + "count": 0, + }), ("https://gfycat.com/gifs/detail/UnequaledHastyAnkole"), ("https://gfycat.com/ifr/UnequaledHastyAnkole"), ("https://gfycat.com/ru/UnequaledHastyAnkole"), @@ -132,6 +139,9 @@ class GfycatImageExtractor(GfycatExtractor): data = {"_extractor": RedgifsImageExtractor} yield Message.Queue, url, data else: + if "gfyName" not in gfycat: + self.log.warning("Skipping '%s' (malformed)", gfycat["gfyId"]) + return url = self._select_format(gfycat) yield Message.Directory, gfycat yield Message.Url, url, gfycat