[hentaiera] add support (#3046 #6952 #7020)

This commit is contained in:
Mike Fährmann
2025-02-19 17:37:10 +01:00
parent 4396029d36
commit d4c56b08d7
6 changed files with 179 additions and 6 deletions

View File

@@ -66,6 +66,7 @@ modules = [
"hatenablog",
"hentai2read",
"hentaicosplays",
"hentaiera",
"hentaifoundry",
"hentaifox",
"hentaihand",

View 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

View File

@@ -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/", "/"),
}