[patreon] recognize URLs with creator IDs (#711)

e.g. https://www.patreon.com/user/posts?u=
pull/726/head
Mike Fährmann 4 years ago
parent 38b6bd66b0
commit 233b6f93a2
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

@ -194,7 +194,7 @@ class PatreonCreatorExtractor(PatreonExtractor):
subcategory = "creator" subcategory = "creator"
pattern = (r"(?:https?://)?(?:www\.)?patreon\.com" pattern = (r"(?:https?://)?(?:www\.)?patreon\.com"
r"/(?!(?:home|join|posts|login|signup)(?:$|[/?&#]))" r"/(?!(?:home|join|posts|login|signup)(?:$|[/?&#]))"
r"([^/?&#]+)/?") r"(?:user(?:/posts)?/?\?([^#]+)|([^/?&#]+)/?)")
test = ( test = (
("https://www.patreon.com/koveliana", { ("https://www.patreon.com/koveliana", {
"range": "1-25", "range": "1-25",
@ -216,14 +216,21 @@ class PatreonCreatorExtractor(PatreonExtractor):
("https://www.patreon.com/kovelianot", { ("https://www.patreon.com/kovelianot", {
"exception": exception.NotFoundError, "exception": exception.NotFoundError,
}), }),
("https://www.patreon.com/user?u=2931440"),
("https://www.patreon.com/user/posts/?u=2931440"),
) )
def __init__(self, match): def __init__(self, match):
PatreonExtractor.__init__(self, match) PatreonExtractor.__init__(self, match)
self.creator = match.group(1).lower() self.query, self.creator = match.groups()
def posts(self): def posts(self):
url = "{}/{}".format(self.root, self.creator) if self.creator:
url = "{}/{}".format(self.root, self.creator.lower())
else:
query = text.parse_query(self.query)
url = "{}/user?u={}".format(self.root, query.get("u"))
page = self.request(url, notfound="creator").text page = self.request(url, notfound="creator").text
campaign_id = text.extract(page, "/campaign/", "/")[0] campaign_id = text.extract(page, "/campaign/", "/")[0]

Loading…
Cancel
Save