summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/patreon.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/extractor/patreon.py')
-rw-r--r--gallery_dl/extractor/patreon.py59
1 files changed, 7 insertions, 52 deletions
diff --git a/gallery_dl/extractor/patreon.py b/gallery_dl/extractor/patreon.py
index e4bfa2a..729ceaf 100644
--- a/gallery_dl/extractor/patreon.py
+++ b/gallery_dl/extractor/patreon.py
@@ -19,7 +19,7 @@ class PatreonExtractor(Extractor):
"""Base class for patreon extractors"""
category = "patreon"
root = "https://www.patreon.com"
- cookiedomain = ".patreon.com"
+ cookies_domain = ".patreon.com"
directory_fmt = ("{category}", "{creator[full_name]}")
filename_fmt = "{id}_{title}_{num:>02}.{extension}"
archive_fmt = "{id}_{num}"
@@ -28,11 +28,11 @@ class PatreonExtractor(Extractor):
_warning = True
def items(self):
-
if self._warning:
- if not self._check_cookies(("session_id",)):
+ if not self.cookies_check(("session_id",)):
self.log.warning("no 'session_id' cookie set")
PatreonExtractor._warning = False
+
generators = self._build_file_generators(self.config("files"))
for post in self.posts():
@@ -103,7 +103,6 @@ class PatreonExtractor(Extractor):
def _pagination(self, url):
headers = {
- "Referer" : self.root + "/",
"Content-Type": "application/vnd.api+json",
}
@@ -251,7 +250,7 @@ class PatreonExtractor(Extractor):
def _extract_bootstrap(self, page):
return util.json_loads(text.extr(
- page, "window.patreon.bootstrap,", "\n});") + "}")
+ page, "window.patreon.bootstrap,", "});") + "}")
class PatreonCreatorExtractor(PatreonExtractor):
@@ -260,34 +259,7 @@ class PatreonCreatorExtractor(PatreonExtractor):
pattern = (r"(?:https?://)?(?:www\.)?patreon\.com"
r"/(?!(?:home|join|posts|login|signup)(?:$|[/?#]))"
r"([^/?#]+)(?:/posts)?/?(?:\?([^#]+))?")
- test = (
- ("https://www.patreon.com/koveliana", {
- "range": "1-25",
- "count": ">= 25",
- "keyword": {
- "attachments" : list,
- "comment_count": int,
- "content" : str,
- "creator" : dict,
- "date" : "type:datetime",
- "id" : int,
- "images" : list,
- "like_count" : int,
- "post_type" : str,
- "published_at" : str,
- "title" : str,
- },
- }),
- ("https://www.patreon.com/koveliana/posts?filters[month]=2020-3", {
- "count": 1,
- "keyword": {"date": "dt:2020-03-30 21:21:44"},
- }),
- ("https://www.patreon.com/kovelianot", {
- "exception": exception.NotFoundError,
- }),
- ("https://www.patreon.com/user?u=2931440"),
- ("https://www.patreon.com/user/posts/?u=2931440"),
- )
+ example = "https://www.patreon.com/USER"
def __init__(self, match):
PatreonExtractor.__init__(self, match)
@@ -328,7 +300,7 @@ class PatreonUserExtractor(PatreonExtractor):
"""Extractor for media from creators supported by you"""
subcategory = "user"
pattern = r"(?:https?://)?(?:www\.)?patreon\.com/home$"
- test = ("https://www.patreon.com/home",)
+ example = "https://www.patreon.com/home"
def posts(self):
url = self._build_url("stream", (
@@ -343,24 +315,7 @@ class PatreonPostExtractor(PatreonExtractor):
"""Extractor for media from a single post"""
subcategory = "post"
pattern = r"(?:https?://)?(?:www\.)?patreon\.com/posts/([^/?#]+)"
- test = (
- # postfile + attachments
- ("https://www.patreon.com/posts/precious-metal-23563293", {
- "count": 4,
- }),
- # postfile + content
- ("https://www.patreon.com/posts/56127163", {
- "count": 3,
- "keyword": {"filename": r"re:^(?!1).+$"},
- }),
- # tags (#1539)
- ("https://www.patreon.com/posts/free-post-12497641", {
- "keyword": {"tags": ["AWMedia"]},
- }),
- ("https://www.patreon.com/posts/not-found-123", {
- "exception": exception.NotFoundError,
- }),
- )
+ example = "https://www.patreon.com/posts/TITLE-12345"
def __init__(self, match):
PatreonExtractor.__init__(self, match)