aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/fansly.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2025-10-14 00:23:17 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2025-10-14 00:23:17 -0400
commit926a7a86168620337d6912790e2695a4247af20b (patch)
tree3e54d31b36ca9d1f50fc5519cdeee12e3387785d /gallery_dl/extractor/fansly.py
parent6492496877fdfb186df50e3e30c66a0e18c395b6 (diff)
parent33f8a8a37a9cba738ef25fb99955f0730da9eb48 (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.py35
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():