aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/hentaifoundry.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/extractor/hentaifoundry.py')
-rw-r--r--gallery_dl/extractor/hentaifoundry.py42
1 files changed, 18 insertions, 24 deletions
diff --git a/gallery_dl/extractor/hentaifoundry.py b/gallery_dl/extractor/hentaifoundry.py
index 7e128a4..e529940 100644
--- a/gallery_dl/extractor/hentaifoundry.py
+++ b/gallery_dl/extractor/hentaifoundry.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright 2015-2023 Mike Fährmann
+# Copyright 2015-2025 Mike Fährmann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
@@ -8,7 +8,7 @@
"""Extractors for https://www.hentai-foundry.com/"""
-from .common import Extractor, Message
+from .common import Extractor, Message, Dispatch
from .. import text, util
BASE_PATTERN = r"(https?://)?(?:www\.)?hentai-foundry\.com"
@@ -25,8 +25,8 @@ class HentaifoundryExtractor(Extractor):
per_page = 25
def __init__(self, match):
- self.root = (match.group(1) or "https://") + "www.hentai-foundry.com"
- self.user = match.group(2)
+ self.root = (match[1] or "https://") + "www.hentai-foundry.com"
+ self.user = match[2]
Extractor.__init__(self, match)
self.page_url = ""
self.start_post = 0
@@ -58,7 +58,7 @@ class HentaifoundryExtractor(Extractor):
num = self.start_page
while True:
- page = self.request("{}/page/{}".format(url, num)).text
+ page = self.request(f"{url}/page/{num}").text
yield from text.extract_iter(page, begin, end)
if 'class="pager"' not in page or 'class="last hidden"' in page:
@@ -192,15 +192,11 @@ class HentaifoundryExtractor(Extractor):
self.request(url, method="POST", data=data)
-class HentaifoundryUserExtractor(HentaifoundryExtractor):
+class HentaifoundryUserExtractor(Dispatch, HentaifoundryExtractor):
"""Extractor for a hentaifoundry user profile"""
- subcategory = "user"
pattern = BASE_PATTERN + r"/user/([^/?#]+)/profile"
example = "https://www.hentai-foundry.com/user/USER/profile"
- def initialize(self):
- pass
-
def items(self):
root = self.root
user = "/user/" + self.user
@@ -224,7 +220,7 @@ class HentaifoundryPicturesExtractor(HentaifoundryExtractor):
def __init__(self, match):
HentaifoundryExtractor.__init__(self, match)
- self.page_url = "{}/pictures/user/{}".format(self.root, self.user)
+ self.page_url = f"{self.root}/pictures/user/{self.user}"
class HentaifoundryScrapsExtractor(HentaifoundryExtractor):
@@ -236,8 +232,7 @@ class HentaifoundryScrapsExtractor(HentaifoundryExtractor):
def __init__(self, match):
HentaifoundryExtractor.__init__(self, match)
- self.page_url = "{}/pictures/user/{}/scraps".format(
- self.root, self.user)
+ self.page_url = f"{self.root}/pictures/user/{self.user}/scraps"
class HentaifoundryFavoriteExtractor(HentaifoundryExtractor):
@@ -250,8 +245,7 @@ class HentaifoundryFavoriteExtractor(HentaifoundryExtractor):
def __init__(self, match):
HentaifoundryExtractor.__init__(self, match)
- self.page_url = "{}/user/{}/faves/pictures".format(
- self.root, self.user)
+ self.page_url = f"{self.root}/user/{self.user}/faves/pictures"
class HentaifoundryTagExtractor(HentaifoundryExtractor):
@@ -264,7 +258,7 @@ class HentaifoundryTagExtractor(HentaifoundryExtractor):
def __init__(self, match):
HentaifoundryExtractor.__init__(self, match)
- self.page_url = "{}/pictures/tagged/{}".format(self.root, self.user)
+ self.page_url = f"{self.root}/pictures/tagged/{self.user}"
def metadata(self):
return {"search_tags": self.user}
@@ -280,7 +274,7 @@ class HentaifoundryRecentExtractor(HentaifoundryExtractor):
def __init__(self, match):
HentaifoundryExtractor.__init__(self, match)
- self.page_url = "{}/pictures/recent/{}".format(self.root, self.user)
+ self.page_url = f"{self.root}/pictures/recent/{self.user}"
def metadata(self):
return {"date": self.user}
@@ -310,11 +304,11 @@ class HentaifoundryImageExtractor(HentaifoundryExtractor):
def __init__(self, match):
HentaifoundryExtractor.__init__(self, match)
- self.index = match.group(3)
+ self.index = match[3]
def items(self):
- post_url = "{}/pictures/user/{}/{}/?enterAgree=1".format(
- self.root, self.user, self.index)
+ post_url = (f"{self.root}/pictures/user/{self.user}"
+ f"/{self.index}/?enterAgree=1")
image = self._parse_post(post_url)
image["user"] = self.user
yield Message.Directory, image
@@ -336,7 +330,7 @@ class HentaifoundryStoriesExtractor(HentaifoundryExtractor):
yield Message.Url, story["src"], story
def stories(self):
- url = "{}/stories/user/{}".format(self.root, self.user)
+ url = f"{self.root}/stories/user/{self.user}"
return self._pagination(url, '<div class="storyRow">', '</tr></table>')
@@ -351,11 +345,11 @@ class HentaifoundryStoryExtractor(HentaifoundryExtractor):
def __init__(self, match):
HentaifoundryExtractor.__init__(self, match)
- self.index = match.group(3)
+ self.index = match[3]
def items(self):
- story_url = "{}/stories/user/{}/{}/x?enterAgree=1".format(
- self.root, self.user, self.index)
+ story_url = (f"{self.root}/stories/user/{self.user}"
+ f"/{self.index}/x?enterAgree=1")
story = self._parse_story(self.request(story_url).text)
yield Message.Directory, story
yield Message.Url, story["src"], story