aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/xenforo.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2026-01-06 04:24:52 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2026-01-06 04:24:52 -0500
commit385e4bfb1e426d23417ac788a6f44d639e226c89 (patch)
treee64f04e19d63014d48e3b5272ce112c637236ba7 /gallery_dl/extractor/xenforo.py
parenta24ec1647aeac35a63b744ea856011ad6e06be3b (diff)
New upstream version 1.31.2.upstream/1.31.2upstream
Diffstat (limited to 'gallery_dl/extractor/xenforo.py')
-rw-r--r--gallery_dl/extractor/xenforo.py28
1 files changed, 16 insertions, 12 deletions
diff --git a/gallery_dl/extractor/xenforo.py b/gallery_dl/extractor/xenforo.py
index d8536b0..838a404 100644
--- a/gallery_dl/extractor/xenforo.py
+++ b/gallery_dl/extractor/xenforo.py
@@ -41,6 +41,7 @@ class XenforoExtractor(BaseExtractor):
r')'
).findall
+ root_media = self.config_instance("root-media") or self.root
for post in self.posts():
urls = extract_urls(post["content"])
if post["attachments"]:
@@ -74,6 +75,8 @@ class XenforoExtractor(BaseExtractor):
text.nameext_from_url(url, data)
data["id"] = text.parse_int(
data["filename"].partition("-")[0])
+ if url[0] == "/":
+ url = root_media + url
yield Message.Url, url, data
elif (inline := inl1 or inl2):
@@ -118,7 +121,7 @@ class XenforoExtractor(BaseExtractor):
def _login_impl(self, username, password):
self.log.info("Logging in as %s", username)
- url = f"{self.root}/login/login"
+ url = self.root + "/login/login"
page = self.request(url).text
data = {
"_xfToken": text.extr(page, 'name="_xfToken" value="', '"'),
@@ -140,10 +143,10 @@ class XenforoExtractor(BaseExtractor):
}
def _pagination(self, base, pnum=None):
- base = f"{self.root}{base}"
+ base = self.root + base
if pnum is None:
- url = f"{base}/"
+ url = base + "/"
pnum = 1
else:
url = f"{base}/page-{pnum}"
@@ -160,7 +163,7 @@ class XenforoExtractor(BaseExtractor):
url = f"{base}/page-{pnum}"
def _pagination_reverse(self, base, pnum=None):
- base = f"{self.root}{base}"
+ base = self.root + base
url = f"{base}/page-{'9999' if pnum is None else pnum}"
with self.request_page(url) as response:
@@ -180,7 +183,7 @@ class XenforoExtractor(BaseExtractor):
if pnum > 1:
url = f"{base}/page-{pnum}"
elif pnum == 1:
- url = f"{base}/"
+ url = base + "/"
else:
return
@@ -274,6 +277,7 @@ BASE_PATTERN = XenforoExtractor.update({
},
"atfforum": {
"root": "https://allthefallen.moe/forum",
+ "root-media": "https://allthefallen.moe",
"pattern": r"(?:www\.)?allthefallen\.moe/forum",
"cookies": ("xf_user",),
},
@@ -282,8 +286,8 @@ BASE_PATTERN = XenforoExtractor.update({
class XenforoPostExtractor(XenforoExtractor):
subcategory = "post"
- pattern = (rf"{BASE_PATTERN}(/(?:index\.php\?)?threads"
- rf"/[^/?#]+/post-|/posts/)(\d+)")
+ pattern = (BASE_PATTERN + r"(/(?:index\.php\?)?threads"
+ r"/[^/?#]+/#?post-|/posts/)(\d+)")
example = "https://simpcity.cr/threads/TITLE.12345/post-54321"
def posts(self):
@@ -303,8 +307,8 @@ class XenforoPostExtractor(XenforoExtractor):
class XenforoThreadExtractor(XenforoExtractor):
subcategory = "thread"
- pattern = (rf"{BASE_PATTERN}(/(?:index\.php\?)?threads"
- rf"/(?:[^/?#]+\.)?\d+)(?:/page-(\d+))?")
+ pattern = (BASE_PATTERN + r"(/(?:index\.php\?)?threads"
+ r"/(?:[^/?#]+\.)?\d+)(?:/page-(\d+))?")
example = "https://simpcity.cr/threads/TITLE.12345/"
def posts(self):
@@ -332,8 +336,8 @@ class XenforoThreadExtractor(XenforoExtractor):
class XenforoForumExtractor(XenforoExtractor):
subcategory = "forum"
- pattern = (rf"{BASE_PATTERN}(/(?:index\.php\?)?forums"
- rf"/(?:[^/?#]+\.)?[^/?#]+)(?:/page-(\d+))?")
+ pattern = (BASE_PATTERN + r"(/(?:index\.php\?)?forums"
+ r"/(?:[^/?#]+\.)?[^/?#]+)(?:/page-(\d+))?")
example = "https://simpcity.cr/forums/TITLE.123/"
def items(self):
@@ -345,4 +349,4 @@ class XenforoForumExtractor(XenforoExtractor):
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
+ yield Message.Queue, self.root + text.unquote(path), data