From 9e638043470db960300b228cc20c3cbf2bbe9ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Thu, 12 Dec 2019 00:31:35 +0100 Subject: [PATCH] [patreon] make retrieving user info nonfatal (#508) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … and fall back to the included data if an error occurs. --- gallery_dl/extractor/patreon.py | 11 ++++++++--- test/test_results.py | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gallery_dl/extractor/patreon.py b/gallery_dl/extractor/patreon.py index 8e900296..d858c043 100644 --- a/gallery_dl/extractor/patreon.py +++ b/gallery_dl/extractor/patreon.py @@ -97,8 +97,10 @@ class PatreonExtractor(Extractor): attr["attachments"] = self._files(post, included, "attachments") attr["date"] = text.parse_datetime( attr["published_at"], "%Y-%m-%dT%H:%M:%S.%f%z") - uid = post["relationships"]["user"]["data"]["id"] - attr["creator"] = included["user"][uid] + user = post["relationships"]["user"] + attr["creator"] = ( + self._user(user["links"]["related"]) or + included["user"][user["data"]["id"]]) return attr @staticmethod @@ -123,7 +125,10 @@ class PatreonExtractor(Extractor): @memcache(keyarg=1) def _user(self, url): """Fetch user information""" - user = self.request(url).json()["data"] + response = self.request(url, fatal=False) + if response.status_code >= 400: + return None + user = response.json()["data"] attr = user["attributes"] attr["id"] = user["id"] attr["date"] = text.parse_datetime( diff --git a/test/test_results.py b/test/test_results.py index 958e530d..eef5559d 100644 --- a/test/test_results.py +++ b/test/test_results.py @@ -21,7 +21,7 @@ TRAVIS_SKIP = { "exhentai", "kissmanga", "mangafox", "dynastyscans", "nijie", "bobx", "archivedmoe", "archiveofsins", "thebarchive", "fireden", "4plebs", "sankaku", "idolcomplex", "mangahere", "readcomiconline", "mangadex", - "sankakucomplex", "warosu", "fuskator", "patreon", + "sankakucomplex", "warosu", "fuskator", } # temporary issues, etc.