[patreon] do not match '/messages' URLs as creators (#7187)

This commit is contained in:
Mike Fährmann
2025-03-18 22:07:44 +01:00
parent a6b8569037
commit 070b75aa82
2 changed files with 28 additions and 3 deletions

View File

@@ -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(

View File

@@ -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,