From 007c433677ecac4597d2b798bcc9bc7026108749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Sat, 4 Nov 2023 00:17:41 +0100 Subject: [PATCH] [patreon] support 'id:' in place of a user name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://patreon.com/id:12345 … and remove 'campaign-id' config option --- docs/configuration.rst | 14 -------------- gallery_dl/extractor/patreon.py | 8 ++++---- test/results/patreon.py | 16 ++++++++++++++-- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/docs/configuration.rst b/docs/configuration.rst index 23cc8f5b..25b0ad9c 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -2440,20 +2440,6 @@ Description Note: This requires 1 additional HTTP request per post. -extractor.patreon.campaign-id ------------------------------ -Type - ``string`` -Default - ``"auto"`` -Description - Alternative way of specifying the ``campaign_id`` value of a creator - in case the automatic extraction method no longer functions. - - Another way of specifying this value is using a ``c`` or ``campaign_id`` - URL query parameter, e,g, ``https://www.patreon.com/NAME?c=12345``. - - extractor.patreon.files ----------------------- Type diff --git a/gallery_dl/extractor/patreon.py b/gallery_dl/extractor/patreon.py index 351c5e3c..6aef9cbe 100644 --- a/gallery_dl/extractor/patreon.py +++ b/gallery_dl/extractor/patreon.py @@ -296,9 +296,8 @@ class PatreonCreatorExtractor(PatreonExtractor): return self._pagination(url) def _get_campaign_id(self, query): - campaign_id = self.config("campaign-id") - if campaign_id and campaign_id != "auto": - return str(campaign_id) + if self.creator.startswith("id:"): + return self.creator[3:] campaign_id = query.get("c") or query.get("campaign_id") if campaign_id: @@ -316,7 +315,8 @@ class PatreonCreatorExtractor(PatreonExtractor): data = self._extract_bootstrap(page) return data["campaign"]["data"]["id"] except (KeyError, ValueError) as exc: - self.log.debug(data) + if data: + self.log.debug(data) raise exception.StopExtraction( "Unable to extract campaign ID (%s: %s)", exc.__class__.__name__, exc) diff --git a/test/results/patreon.py b/test/results/patreon.py index adad12e3..d4557173 100644 --- a/test/results/patreon.py +++ b/test/results/patreon.py @@ -14,8 +14,8 @@ __tests__ = ( "#url" : "https://www.patreon.com/koveliana", "#category": ("", "patreon", "creator"), "#class" : patreon.PatreonCreatorExtractor, - "#range" : "1-25", - "#count" : ">= 25", + "#range" : "1-15", + "#count" : 15, "attachments" : list, "comment_count": int, @@ -58,6 +58,18 @@ __tests__ = ( "#class" : patreon.PatreonCreatorExtractor, }, +{ + "#url" : "https://www.patreon.com/user?c=369707", + "#category": ("", "patreon", "creator"), + "#class" : patreon.PatreonCreatorExtractor, +}, + +{ + "#url" : "https://www.patreon.com/id:369707", + "#category": ("", "patreon", "creator"), + "#class" : patreon.PatreonCreatorExtractor, +}, + { "#url" : "https://www.patreon.com/home", "#category": ("", "patreon", "user"),