From 070b75aa82ed9f468becb5a104551058529a48e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Tue, 18 Mar 2025 22:07:44 +0100 Subject: [PATCH] [patreon] do not match '/messages' URLs as creators (#7187) --- gallery_dl/extractor/patreon.py | 7 ++++--- test/results/patreon.py | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/gallery_dl/extractor/patreon.py b/gallery_dl/extractor/patreon.py index eae3a7b5..b8c6acb5 100644 --- a/gallery_dl/extractor/patreon.py +++ b/gallery_dl/extractor/patreon.py @@ -329,10 +329,11 @@ class PatreonCreatorExtractor(PatreonExtractor): """Extractor for a creator's works""" subcategory = "creator" pattern = (r"(?:https?://)?(?:www\.)?patreon\.com" - r"/(?!(?:home|join|posts|login|signup)(?:$|[/?#]))" + r"/(?!(?:home|create|login|signup|search|posts|messages)" + r"(?:$|[/?#]))" r"(?:profile/creators|(?:c/)?([^/?#]+)(?:/posts)?)" r"/?(?:\?([^#]+))?") - example = "https://www.patreon.com/USER" + example = "https://www.patreon.com/c/USER" def posts(self): creator, query = self.groups @@ -370,7 +371,7 @@ class PatreonCreatorExtractor(PatreonExtractor): data = None data = self._extract_bootstrap(page) return data["campaign"]["data"]["id"] - except (KeyError, ValueError) as exc: + except Exception as exc: if data: self.log.debug(data) raise exception.StopExtraction( diff --git a/test/results/patreon.py b/test/results/patreon.py index d50cc6b1..5c205771 100644 --- a/test/results/patreon.py +++ b/test/results/patreon.py @@ -79,6 +79,30 @@ __tests__ = ( "#class" : patreon.PatreonCreatorExtractor, }, +{ + "#url" : "https://www.patreon.com/create", + "#class" : patreon.PatreonCreatorExtractor, + "#fail" : True, +}, + +{ + "#url" : "https://www.patreon.com/login", + "#class" : patreon.PatreonCreatorExtractor, + "#fail" : True, +}, + +{ + "#url" : "https://www.patreon.com/search?q=foobar", + "#class" : patreon.PatreonCreatorExtractor, + "#fail" : True, +}, + +{ + "#url" : "https://www.patreon.com/messages/?mode=user&tab=chats", + "#class" : patreon.PatreonCreatorExtractor, + "#fail" : True, +}, + { "#url" : "https://www.patreon.com/home", "#class" : patreon.PatreonUserExtractor,