From fb0d639f6801adaa414b3aac335634371948fc8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Thu, 22 Jan 2026 09:10:31 +0100 Subject: [PATCH] [xenforo] add 'media-album' extractor (#8902) --- docs/supportedsites.md | 8 ++++---- gallery_dl/extractor/xenforo.py | 16 ++++++++++++++++ scripts/supportedsites.py | 1 + test/results/atfforum.py | 6 ++++++ test/results/celebforum.py | 6 ++++++ 5 files changed, 33 insertions(+), 4 deletions(-) diff --git a/docs/supportedsites.md b/docs/supportedsites.md index caf88c5c..47949691 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -1912,25 +1912,25 @@ Consider all listed sites to potentially be NSFW. SimpCity Forums https://simpcity.cr/ - Forums, Media Categories, Media Files, User Media, Posts, Threads + Forums, Albums, Media Categories, Media Files, User Media, Posts, Threads Supported NudoStar Forums https://nudostar.com/forum/ - Forums, Media Categories, Media Files, User Media, Posts, Threads + Forums, Albums, Media Categories, Media Files, User Media, Posts, Threads Supported All The Fallen https://allthefallen.moe/forum/ - Forums, Media Categories, Media Files, User Media, Posts, Threads + Forums, Albums, Media Categories, Media Files, User Media, Posts, Threads celebforum https://celebforum.to/ - Forums, Media Categories, Media Files, User Media, Posts, Threads + Forums, Albums, Media Categories, Media Files, User Media, Posts, Threads diff --git a/gallery_dl/extractor/xenforo.py b/gallery_dl/extractor/xenforo.py index 5c31e600..ac852ca5 100644 --- a/gallery_dl/extractor/xenforo.py +++ b/gallery_dl/extractor/xenforo.py @@ -476,6 +476,22 @@ class XenforoMediaUserExtractor(XenforoExtractor): return self.items_media(f"{groups[-4]}media/users/{user}", pnum) +class XenforoMediaAlbumExtractor(XenforoExtractor): + subcategory = "media-album" + directory_fmt = ("{category}", "Media", "Albums", + "{album_slug} ({album_id})") + filename_fmt = "{filename}.{extension}" + archive_fmt = "{id}" + pattern = (BASE_PATTERN + r"(/(?:index\.php\?)?" + r"media/albums/([^/?#]+))(?:/page-(\d+))?") + example = "https://simpcity.cr/media/albums/ALBUM.123/" + + def items(self): + slug, _, self.kwdict["album_id"] = self.groups[-2].rpartition(".") + self.kwdict["album_slug"] = text.unquote(slug) + return self.items_media(self.groups[-3], self.groups[-1]) + + class XenforoMediaCategoryExtractor(XenforoExtractor): subcategory = "media-category" directory_fmt = ("{category}", "Media", "Category", "{mcategory}") diff --git a/scripts/supportedsites.py b/scripts/supportedsites.py index d52afb57..29c0e776 100755 --- a/scripts/supportedsites.py +++ b/scripts/supportedsites.py @@ -475,6 +475,7 @@ SUBCATEGORY_MAP = { "media-user": "User Media", "media-item": "Media Files", "media-category": "Media Categories", + "media-album" : "Albums", }, } diff --git a/test/results/atfforum.py b/test/results/atfforum.py index 45d89576..9c66d34d 100644 --- a/test/results/atfforum.py +++ b/test/results/atfforum.py @@ -154,4 +154,10 @@ __tests__ = ( "#class" : xenforo.XenforoMediaCategoryExtractor, }, +{ + "#url" : "https://allthefallen.moe/forum/index.php?media/albums/2-%E9%AD%94%E6%B3%95%E5%B0%91%E5%A5%B3%E3%81%AB%E3%81%82%E3%81%93%E3%81%8C%E3%82%8C%E3%81%A6-mahou-shoujo-ni-akogarete.7385/", + "#category": ("xenforo", "atfforum", "media-album"), + "#class" : xenforo.XenforoMediaAlbumExtractor, +}, + ) diff --git a/test/results/celebforum.py b/test/results/celebforum.py index f5f0065a..06c85a7a 100644 --- a/test/results/celebforum.py +++ b/test/results/celebforum.py @@ -99,4 +99,10 @@ __tests__ = ( "#count" : 50, }, +{ + "#url" : "https://celebforum.to/media/albums/5404/", + "#category": ("xenforo", "celebforum", "media-album"), + "#class" : xenforo.XenforoMediaAlbumExtractor, +}, + )