diff options
Diffstat (limited to 'gallery_dl/extractor/xenforo.py')
| -rw-r--r-- | gallery_dl/extractor/xenforo.py | 28 |
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 |
