diff options
Diffstat (limited to 'gallery_dl/extractor/patreon.py')
| -rw-r--r-- | gallery_dl/extractor/patreon.py | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/gallery_dl/extractor/patreon.py b/gallery_dl/extractor/patreon.py index 3eacf1a..e4a5985 100644 --- a/gallery_dl/extractor/patreon.py +++ b/gallery_dl/extractor/patreon.py @@ -23,18 +23,22 @@ class PatreonExtractor(Extractor): directory_fmt = ("{category}", "{creator[full_name]}") filename_fmt = "{id}_{title}_{num:>02}.{extension}" archive_fmt = "{id}_{num}" + useragent = "Patreon/72.2.28 (Android; Android 14; Scale/2.10)" _warning = True def _init(self): - if self.cookies_check(("session_id",)): - self.session.headers["User-Agent"] = \ - "Patreon/72.2.28 (Android; Android 14; Scale/2.10)" - else: + if not self.cookies_check(("session_id",)): if self._warning: PatreonExtractor._warning = False self.log.warning("no 'session_id' cookie set") - self.session.headers["User-Agent"] = \ - "Patreon/7.6.28 (Android; Android 11; Scale/2.10)" + if self.session.headers["User-Agent"] is self.useragent: + self.session.headers["User-Agent"] = \ + "Patreon/7.6.28 (Android; Android 11; Scale/2.10)" + + format_images = self.config("format-images") + if format_images: + self._images_fmt = format_images + self._images_url = self._images_url_fmt def items(self): generators = self._build_file_generators(self.config("files")) @@ -80,11 +84,20 @@ class PatreonExtractor(Extractor): def _images(self, post): for image in post.get("images") or (): - url = image.get("download_url") + url = self._images_url(image) if url: name = image.get("file_name") or self._filename(url) or url yield "image", url, name + def _images_url(self, image): + return image.get("download_url") + + def _images_url_fmt(self, image): + try: + return image["image_urls"][self._images_fmt] + except Exception: + return image.get("download_url") + def _image_large(self, post): image = post.get("image") if image: |
