@@ -337,6 +337,12 @@ Consider all listed sites to potentially be NSFW.
|
||||
<td>Chapters, Manga</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>HentaiEra</td>
|
||||
<td>https://hentaiera.com/</td>
|
||||
<td>Galleries, Search Results, Tag Searches</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>HentaiFox</td>
|
||||
<td>https://hentaifox.com/</td>
|
||||
|
||||
@@ -66,6 +66,7 @@ modules = [
|
||||
"hatenablog",
|
||||
"hentai2read",
|
||||
"hentaicosplays",
|
||||
"hentaiera",
|
||||
"hentaifoundry",
|
||||
"hentaifox",
|
||||
"hentaihand",
|
||||
|
||||
46
gallery_dl/extractor/hentaiera.py
Normal file
46
gallery_dl/extractor/hentaiera.py
Normal file
@@ -0,0 +1,46 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 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
|
||||
# published by the Free Software Foundation.
|
||||
|
||||
"""Extractors for https://hentaiera.com/"""
|
||||
|
||||
from . import imhentai
|
||||
|
||||
BASE_PATTERN = r"(?:https?://)?(?:www\.)?hentaiera\.com"
|
||||
|
||||
|
||||
class HentaieraExtractor():
|
||||
category = "hentaiera"
|
||||
root = "https://hentaiera.com"
|
||||
|
||||
|
||||
class HentaieraGalleryExtractor(
|
||||
HentaieraExtractor, imhentai.ImhentaiGalleryExtractor):
|
||||
"""Extractor for hentaiera galleries"""
|
||||
pattern = BASE_PATTERN + r"/(?:gallery|view)/(\d+)"
|
||||
example = "https://hentaiera.com/gallery/12345/"
|
||||
|
||||
|
||||
class HentaieraTagExtractor(
|
||||
HentaieraExtractor, imhentai.ImhentaiTagExtractor):
|
||||
"""Extractor for hentaiera tag searches"""
|
||||
subcategory = "tag"
|
||||
pattern = (BASE_PATTERN + r"(/(?:"
|
||||
r"artist|category|character|group|language|parody|tag"
|
||||
r")/([^/?#]+))")
|
||||
example = "https://hentaiera.com/tag/TAG/"
|
||||
|
||||
|
||||
class HentaieraSearchExtractor(
|
||||
HentaieraExtractor, imhentai.ImhentaiSearchExtractor):
|
||||
"""Extractor for hentaiera search results"""
|
||||
subcategory = "search"
|
||||
pattern = BASE_PATTERN + r"/search/?\?([^#]+)"
|
||||
example = "https://hentaiera.com/search/?key=QUERY"
|
||||
|
||||
|
||||
HentaieraExtractor._gallery_extractor = HentaieraGalleryExtractor
|
||||
@@ -61,12 +61,12 @@ class ImhentaiGalleryExtractor(ImhentaiExtractor, GalleryExtractor):
|
||||
"gallery_id": text.parse_int(self.gallery_id),
|
||||
"title" : text.unescape(extr("<h1>", "<")),
|
||||
"title_alt" : text.unescape(extr('class="subtitle">', "<")),
|
||||
"parody" : self._split(extr(">Parodies:</span>", "</li>")),
|
||||
"character" : self._split(extr(">Characters:</span>", "</li>")),
|
||||
"tags" : self._split(extr(">Tags:</span>", "</li>")),
|
||||
"artist" : self._split(extr(">Artists:</span>", "</li>")),
|
||||
"group" : self._split(extr(">Groups:</span>", "</li>")),
|
||||
"language" : self._split(extr(">Languages:</span>", "</li>")),
|
||||
"parody" : self._split(extr(">Parodies", "</li>")),
|
||||
"character" : self._split(extr(">Characters", "</li>")),
|
||||
"tags" : self._split(extr(">Tags", "</li>")),
|
||||
"artist" : self._split(extr(">Artists", "</li>")),
|
||||
"group" : self._split(extr(">Groups", "</li>")),
|
||||
"language" : self._split(extr(">Languages", "</li>")),
|
||||
"type" : extr("href='/category/", "/"),
|
||||
}
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ CATEGORY_MAP = {
|
||||
"hbrowse" : "HBrowse",
|
||||
"hentai2read" : "Hentai2Read",
|
||||
"hentaicosplay" : "Hentai Cosplay",
|
||||
"hentaiera" : "HentaiEra",
|
||||
"hentaifoundry" : "Hentai Foundry",
|
||||
"hentaifox" : "HentaiFox",
|
||||
"hentaihand" : "HentaiHand",
|
||||
|
||||
119
test/results/hentaiera.py
Normal file
119
test/results/hentaiera.py
Normal file
@@ -0,0 +1,119 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# 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
|
||||
# published by the Free Software Foundation.
|
||||
|
||||
from gallery_dl.extractor import hentaiera
|
||||
|
||||
|
||||
__tests__ = (
|
||||
{
|
||||
"#url" : "https://hentaiera.com/gallery/28/",
|
||||
"#class" : hentaiera.HentaieraGalleryExtractor,
|
||||
"#pattern": r"https://m1\.hentaiera\.com/001/knrxtga49v/\d+\.jpg",
|
||||
"#count" : 25,
|
||||
|
||||
"count" : 25,
|
||||
"extension" : "jpg",
|
||||
"filename" : r"re:\d+",
|
||||
"gallery_id": 28,
|
||||
"lang" : "ja",
|
||||
"num" : range(1, 25),
|
||||
"title" : "(Shikei wa Iyadakara na) [Kujira Logic, TOYBOX (Kujiran, Kurikara)] Gensou-kyou Chichi Zukan - Kurenai (Touhou Project)",
|
||||
"title_alt" : "(死刑はいやだからな) [くぢらろじっく, といぼっくす (くぢらん, くりから)] 幻想郷乳図鑑 - 紅 (東方Project)",
|
||||
"type" : "doujinshi",
|
||||
"width" : {696, 701},
|
||||
"height" : {999, 1000},
|
||||
|
||||
"artist": [
|
||||
"kujiran",
|
||||
"kurikara",
|
||||
],
|
||||
"character": [
|
||||
"hong meiling",
|
||||
"koakuma",
|
||||
"patchouli knowledge",
|
||||
"remilia scarlet",
|
||||
"sakuya izayoi",
|
||||
],
|
||||
"group": [
|
||||
"kujira logic",
|
||||
"toybox",
|
||||
],
|
||||
"language": [
|
||||
"japanese",
|
||||
],
|
||||
"parody": [
|
||||
"touhou project",
|
||||
],
|
||||
"tags": [
|
||||
"big breasts",
|
||||
"footjob",
|
||||
"futanari",
|
||||
"lolicon",
|
||||
"maid",
|
||||
"paizuri",
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://hentaiera.com/gallery/9319/",
|
||||
"#class" : hentaiera.HentaieraGalleryExtractor,
|
||||
"#pattern": r"https://m1\.hentaiera\.com/001/gkchsf3x5m/\d+\.jpg",
|
||||
"#count" : 8,
|
||||
|
||||
"count" : 8,
|
||||
"extension" : "jpg",
|
||||
"filename" : r"re:\d+",
|
||||
"gallery_id": 9319,
|
||||
"lang" : "ja",
|
||||
"num" : range(1, 8),
|
||||
"title" : "(C70) [UDON-YA (Kizuki Aruchu, ZAN)] Udonko CM70 Omake Hon (Various)",
|
||||
"title_alt" : "(C70) [うどんや (鬼月あるちゅ、ZAN)] うどんこ CM70オマケ本 (よろず)",
|
||||
"type" : "doujinshi",
|
||||
"width" : 1076,
|
||||
"height" : 1517,
|
||||
|
||||
"artist": [
|
||||
"kizuki aruchu",
|
||||
"zan",
|
||||
],
|
||||
"character": [
|
||||
"mikuru asahina",
|
||||
"reisen udongein inaba",
|
||||
"tsuruya",
|
||||
],
|
||||
"group": [
|
||||
"udon-ya",
|
||||
],
|
||||
"language": [
|
||||
"japanese",
|
||||
],
|
||||
"parody": [
|
||||
"fate stay night",
|
||||
"super robot wars | super robot taisen",
|
||||
"the melancholy of haruhi suzumiya | suzumiya haruhi no yuuutsu",
|
||||
],
|
||||
"tags": [
|
||||
"big breasts",
|
||||
"okaasan to issho",
|
||||
"touhou kaeidzuka",
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://hentaiera.com/artist/kujiran/",
|
||||
"#class" : hentaiera.HentaieraTagExtractor,
|
||||
"#pattern": hentaiera.HentaieraGalleryExtractor.pattern,
|
||||
"#count" : range(120, 150),
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://hentaiera.com/search/?key=kujiran",
|
||||
"#class" : hentaiera.HentaieraSearchExtractor,
|
||||
"#pattern": hentaiera.HentaieraGalleryExtractor.pattern,
|
||||
"#count" : range(120, 150),
|
||||
},
|
||||
|
||||
)
|
||||
Reference in New Issue
Block a user