',
''),
}
@@ -224,16 +240,35 @@ class SimpcityExtractor(Extractor):
url_a = post["author_url"]
post["author_id"] = url_a[url_a.rfind(".")+1:-1]
+ con = post["content"]
+ if (pos := con.find('
]+data-xf-init=').findall
+
+ data = {"_extractor": XenforoThreadExtractor}
+ path = self.groups[-2]
+ pnum = self.groups[-1]
+ for page in self._pagination(path, pnum):
+ for path in extract_threads(page):
yield Message.Queue, f"{self.root}{text.unquote(path)}", data
diff --git a/scripts/supportedsites.py b/scripts/supportedsites.py
index 83dd6545..da195c5a 100755
--- a/scripts/supportedsites.py
+++ b/scripts/supportedsites.py
@@ -142,6 +142,7 @@ CATEGORY_MAP = {
"nozrip" : "GaryC Booru",
"nsfwalbum" : "NSFWalbum.com",
"nudostar" : "NudoStar.TV",
+ "nudostarforum" : "NudoStar Forums",
"okporn" : "OK.PORN",
"paheal" : "Rule 34",
"photovogue" : "PhotoVogue",
@@ -472,6 +473,7 @@ BASE_MAP = {
"szurubooru" : "szurubooru Instances",
"urlshortener": "URL Shorteners",
"vichan" : "vichan Imageboards",
+ "xenforo" : "XenForo Forums",
}
URL_MAP = {
@@ -526,6 +528,7 @@ AUTH_MAP = {
"mastodon.social": _OAUTH,
"newgrounds" : "Supported",
"nijie" : "Required",
+ "nudostarforum" : "Supported",
"patreon" : _COOKIES,
"pawoo" : _OAUTH,
"pillowfort" : "Supported",
diff --git a/test/results/nudostarforum.py b/test/results/nudostarforum.py
index 79526480..d031a28a 100644
--- a/test/results/nudostarforum.py
+++ b/test/results/nudostarforum.py
@@ -4,26 +4,73 @@
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
-from gallery_dl.extractor import nudostarforum
+from gallery_dl.extractor import xenforo
__tests__ = (
{
- "#url" : "https://nudostar.com/forum/threads/aspen-rae.106714/",
- "#category": ("", "nudostarforum", "thread"),
- "#class" : nudostarforum.NudostarforumThreadExtractor,
-},
+ "#url" : "https://nudostar.com/forum/threads/tate-mcrae.109528/post-1919100",
+ "#category": ("xenforo", "nudostarforum", "post"),
+ "#class" : xenforo.XenforoPostExtractor,
+ "#auth" : True,
+ "#results" : (
+ "https://imagetwist.com/bvolb8129fnm/v1.jpg",
+ "https://imagetwist.com/9pddder15iow/v2.jpg",
+ "https://imagetwist.com/zzonmk0gqqdv/v3.jpg",
+ ),
-{
- "#url" : "https://nudostar.com/forum/threads/aspen-rae.106714/page-2",
- "#category": ("", "nudostarforum", "thread"),
- "#class" : nudostarforum.NudostarforumThreadExtractor,
+ "count" : 3,
+ "type" : "external",
+ "post" : {
+ "attachments": "",
+ "author" : "djokica",
+ "author_id" : "3471965",
+ "author_url" : "/forum/members/djokica.3471965/",
+ "content" : """
""",
+ "count" : 3,
+ "date" : "dt:2025-10-31 21:26:42",
+ "id" : "1919100",
+ },
+ "thread" : {
+ "author" : "djokica",
+ "author_id" : "",
+ "author_url": "",
+ "date" : "dt:2024-06-05 00:00:00",
+ "id" : "109528",
+ "posts" : range(20, 80),
+ "section" : "Celebrity",
+ "tags" : (),
+ "title" : "Tate Mcrae",
+ "url" : "https://nudostar.com/forum/threads/tate-mcrae.109528/",
+ "views" : -1,
+ },
},
{
"#url" : "https://nudostar.com/forum/threads/name.12345/post-67890",
- "#category": ("", "nudostarforum", "post"),
- "#class" : nudostarforum.NudostarforumPostExtractor,
+ "#category": ("xenforo", "nudostarforum", "post"),
+ "#class" : xenforo.XenforoPostExtractor,
+},
+
+{
+ "#url" : "https://nudostar.com/forum/threads/aspen-rae.106714/",
+ "#category": ("xenforo", "nudostarforum", "thread"),
+ "#class" : xenforo.XenforoThreadExtractor,
+},
+
+{
+ "#url" : "https://nudostar.com/forum/threads/aspen-rae.106714/page-2",
+ "#category": ("xenforo", "nudostarforum", "thread"),
+ "#class" : xenforo.XenforoThreadExtractor,
+},
+
+{
+ "#url" : "https://nudostar.com/forum/forums/celebrity.14/",
+ "#category": ("xenforo", "nudostarforum", "forum"),
+ "#class" : xenforo.XenforoForumExtractor,
+ "#pattern" : xenforo.XenforoThreadExtractor.pattern,
+ "#range" : "1-100",
+ "#count" : 100,
},
)
diff --git a/test/results/simpcity.py b/test/results/simpcity.py
index 6baafa21..a731a736 100644
--- a/test/results/simpcity.py
+++ b/test/results/simpcity.py
@@ -4,14 +4,15 @@
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
-from gallery_dl.extractor import simpcity
+from gallery_dl.extractor import xenforo
from gallery_dl import exception
__tests__ = (
{
"#url" : "https://simpcity.cr/threads/ririkana-rr_loveit.10731/post-1753131",
- "#class" : simpcity.SimpcityPostExtractor,
+ "#category": ("xenforo", "simpcity", "post"),
+ "#class" : xenforo.XenforoPostExtractor,
"#auth" : True,
"#results" : "https://jpg6.su/img/coWRwo",
@@ -54,7 +55,8 @@ __tests__ = (
{
"#url" : "https://simpcity.cr/threads/ririkana-rr_loveit.10731/post-1753131",
- "#class" : simpcity.SimpcityPostExtractor,
+ "#category": ("xenforo", "simpcity", "post"),
+ "#class" : xenforo.XenforoPostExtractor,
"#auth" : False,
"#exception": exception.AuthRequired,
},
@@ -62,7 +64,8 @@ __tests__ = (
{
"#url" : "https://simpcity.cr/threads/puutin_cos.219873/post-26053409",
"#comment" : "iframe embeds (#8214)",
- "#class" : simpcity.SimpcityPostExtractor,
+ "#category": ("xenforo", "simpcity", "post"),
+ "#class" : xenforo.XenforoPostExtractor,
"#auth" : True,
"#results" : (
"https://jpg6.su/img/NNFssUg",
@@ -76,7 +79,8 @@ __tests__ = (
{
"#url" : "https://simpcity.cr/threads/shinhashimoto00-shinhashimoto01.184378/post-13389764",
"#comment" : "quote in post content (#8214)",
- "#class" : simpcity.SimpcityPostExtractor,
+ "#category": ("xenforo", "simpcity", "post"),
+ "#class" : xenforo.XenforoPostExtractor,
"#auth" : True,
"#results" : (
"/goto/post?id=13358068",
@@ -87,9 +91,11 @@ __tests__ = (
{
"#url" : "https://simpcity.cr/threads/kayle-oralglory.36572/post-12065490",
"#comment" : "deleted thread author (#8323)",
- "#class" : simpcity.SimpcityPostExtractor,
+ "#category": ("xenforo", "simpcity", "post"),
+ "#class" : xenforo.XenforoPostExtractor,
"#auth" : True,
"#results" : (
+ "https://redgifs.com/ifr/trainedovercookedsquid",
"https://jpg6.su/img/aKroBJp",
"https://jpg6.su/img/aKroy2E",
"https://jpg6.su/img/aKrofqa",
@@ -101,7 +107,7 @@ __tests__ = (
"author" : "Hexorium",
"author_id" : "3715883",
"author_url": "https://simpcity.cr/members/hexorium.3715883/",
- "count" : 5,
+ "count" : 6,
"date" : "dt:2024-12-15 21:37:05",
"id" : "12065490",
},
@@ -119,7 +125,8 @@ __tests__ = (
{
"#url" : "https://simpcity.cr/threads/sophia-diamond.10049/post-10891",
- "#class" : simpcity.SimpcityPostExtractor,
+ "#category": ("xenforo", "simpcity", "post"),
+ "#class" : xenforo.XenforoPostExtractor,
"#auth" : True,
"#results" : (
"https://brandarmy.com/SophiaDiamond",
@@ -136,8 +143,8 @@ __tests__ = (
"post" : {
"attachments": "",
"author" : "inoncognito",
- "author_id" : "",
- "author_url" : "",
+ "author_id" : "53824",
+ "author_url" : "/members/inoncognito.53824/",
"count" : 4,
"date" : "dt:2022-03-11 00:41:28",
"id" : "10891",
@@ -170,7 +177,8 @@ __tests__ = (
{
"#url" : "https://simpcity.cr/threads/sophia-diamond.10049/post-18744",
- "#class" : simpcity.SimpcityPostExtractor,
+ "#category": ("xenforo", "simpcity", "post"),
+ "#class" : xenforo.XenforoPostExtractor,
"#auth" : True,
"#results" : "https://simpcity.cr/attachments/sophiadiamondcancunbikiniwp-png.36179/",
@@ -190,12 +198,7 @@ __tests__ = (
"date" : "dt:2022-03-11 22:39:06",
"id" : "18744",
"attachments": str,
- "content" : """\
-
Collage
-
-
-