summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/patreon.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2020-04-29 17:42:33 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2020-04-29 17:42:33 -0400
commitd5b96ce44b7809f5ae01e3e9d70a1d58fe21ccf5 (patch)
tree1302b36780656b71ccb4aebda4f7ea1e2c744e52 /gallery_dl/extractor/patreon.py
parentcf188f30e1c27bdb900fa2623a9ff91b944633b2 (diff)
New upstream version 1.13.5upstream/1.13.5
Diffstat (limited to 'gallery_dl/extractor/patreon.py')
-rw-r--r--gallery_dl/extractor/patreon.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/gallery_dl/extractor/patreon.py b/gallery_dl/extractor/patreon.py
index 0d51df2..18c10a6 100644
--- a/gallery_dl/extractor/patreon.py
+++ b/gallery_dl/extractor/patreon.py
@@ -47,7 +47,7 @@ class PatreonExtractor(Extractor):
self._attachments(post),
self._content(post),
):
- fhash = url.rsplit("/", 2)[1]
+ fhash = url.split("/")[9].partition("?")[0]
if fhash not in hashes:
hashes.add(fhash)
post["hash"] = fhash
@@ -194,7 +194,7 @@ class PatreonCreatorExtractor(PatreonExtractor):
subcategory = "creator"
pattern = (r"(?:https?://)?(?:www\.)?patreon\.com"
r"/(?!(?:home|join|posts|login|signup)(?:$|[/?&#]))"
- r"([^/?&#]+)/?")
+ r"(?:user(?:/posts)?/?\?([^#]+)|([^/?&#]+)/?)")
test = (
("https://www.patreon.com/koveliana", {
"range": "1-25",
@@ -216,14 +216,21 @@ class PatreonCreatorExtractor(PatreonExtractor):
("https://www.patreon.com/kovelianot", {
"exception": exception.NotFoundError,
}),
+ ("https://www.patreon.com/user?u=2931440"),
+ ("https://www.patreon.com/user/posts/?u=2931440"),
)
def __init__(self, match):
PatreonExtractor.__init__(self, match)
- self.creator = match.group(1).lower()
+ self.query, self.creator = match.groups()
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
campaign_id = text.extract(page, "/campaign/", "/")[0]