diff options
| author | 2025-10-14 00:23:17 -0400 | |
|---|---|---|
| committer | 2025-10-14 00:23:17 -0400 | |
| commit | 926a7a86168620337d6912790e2695a4247af20b (patch) | |
| tree | 3e54d31b36ca9d1f50fc5519cdeee12e3387785d /gallery_dl/extractor/fansly.py | |
| parent | 6492496877fdfb186df50e3e30c66a0e18c395b6 (diff) | |
| parent | 33f8a8a37a9cba738ef25fb99955f0730da9eb48 (diff) | |
Update upstream source from tag 'upstream/1.30.10'
Update to upstream version '1.30.10'
with Debian dir e2322700edd83cfacc538c82b4928de8a169ad1a
Diffstat (limited to 'gallery_dl/extractor/fansly.py')
| -rw-r--r-- | gallery_dl/extractor/fansly.py | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/gallery_dl/extractor/fansly.py b/gallery_dl/extractor/fansly.py index 8a6dbef..7138599 100644 --- a/gallery_dl/extractor/fansly.py +++ b/gallery_dl/extractor/fansly.py @@ -9,7 +9,7 @@ """Extractors for https://fansly.com/""" from .common import Extractor, Message -from .. import text, util +from .. import text, util, exception import time BASE_PATTERN = r"(?:https?://)?(?:www\.)?fansly\.com" @@ -43,6 +43,23 @@ class FanslyExtractor(Extractor): url = file["url"] yield Message.Url, url, text.nameext_from_url(url, post) + def posts(self): + creator, wall_id = self.groups + account = self.api.account(creator) + walls = account["walls"] + + if wall_id: + for wall in walls: + if wall["id"] == wall_id: + break + else: + raise exception.NotFoundError("wall") + walls = (wall,) + + for wall in walls: + self.kwdict["wall"] = wall + yield from self.posts_wall(account, wall) + def _extract_files(self, post): files = [] @@ -77,7 +94,7 @@ class FanslyExtractor(Extractor): variants.append(media) formats = [ - (type > 256, variant["width"], type, variant) + (variant["width"], (type-500 if type > 256 else type), variant) for variant in variants if variant.get("locations") and (type := variant["type"]) in self.formats @@ -190,11 +207,8 @@ class FanslyCreatorPostsExtractor(FanslyExtractor): pattern = rf"{BASE_PATTERN}/([^/?#]+)/posts(?:/wall/(\d+))?" example = "https://fansly.com/CREATOR/posts" - def posts(self): - creator, wall_id = self.groups - account = self.api.account(creator) - return self.api.timeline_new( - account["id"], wall_id or account["walls"][0]["id"]) + def posts_wall(self, account, wall): + return self.api.timeline_new(account["id"], wall["id"]) class FanslyCreatorMediaExtractor(FanslyExtractor): @@ -202,11 +216,8 @@ class FanslyCreatorMediaExtractor(FanslyExtractor): pattern = rf"{BASE_PATTERN}/([^/?#]+)/media(?:/wall/(\d+))?" example = "https://fansly.com/CREATOR/media" - def posts(self): - creator, wall_id = self.groups - account = self.api.account(creator) - return self.api.mediaoffers_location( - account["id"], wall_id or account["walls"][0]["id"]) + def posts_wall(self, account, wall): + return self.api.mediaoffers_location(account["id"], wall["id"]) class FanslyAPI(): |
