1
0
mirror of https://github.com/mikf/gallery-dl.git synced 2024-11-22 02:32:33 +01:00

[koharu] implement 'tags' option

This commit is contained in:
Mike Fährmann 2024-11-15 23:06:01 +01:00
parent ddd325b435
commit cb09273670
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88
3 changed files with 74 additions and 6 deletions

View File

@ -1058,7 +1058,8 @@ Description
extractor.*.postprocessors
--------------------------
Type
``list`` of |Postprocessor Configuration|_ objects
* |Postprocessor Configuration|_ object
* ``list`` of |Postprocessor Configuration|_ objects
Example
.. code:: json
@ -2363,6 +2364,18 @@ Description
* ``"hitomi"``: Download the corresponding gallery from ``hitomi.la``
extractor.exhentai.tags
-----------------------
Type
``bool``
Default
``false``
Description
Group ``tags`` by type and
provide them as ``tags_<type>`` metadata fields,
for example ``tags_artist`` or ``tags_character``.
extractor.fanbox.comments
-------------------------
Type
@ -3032,6 +3045,18 @@ Description
| ``"780"``, ``"980"``, ``"1280"``, ``"1600"``, ``"0"`` (original)
extractor.koharu.tags
---------------------
Type
``bool``
Default
``false``
Description
Group ``tags`` by type and
provide them as ``tags_<type>`` metadata fields,
for example ``tags_artist`` or ``tags_character``.
extractor.lolisafe.domain
-------------------------
Type
@ -5156,8 +5181,9 @@ Type
Default
``false``
Description
Categorize tags by their respective types
and provide them as ``tags_<type>`` metadata fields.
Group ``tags`` by type and
provide them as ``tags_<type>`` metadata fields,
for example ``tags_artist`` or ``tags_character``.
Note: This requires 1 additional HTTP request per post.

View File

@ -11,6 +11,7 @@
from .common import GalleryExtractor, Extractor, Message
from .. import text, exception
from ..cache import cache
import collections
BASE_PATTERN = (
r"(?i)(?:https?://)?("
@ -108,14 +109,24 @@ class KoharuGalleryExtractor(KoharuExtractor, GalleryExtractor):
url = "{}/books/detail/{}/{}".format(
self.root_api, self.groups[1], self.groups[2])
self.data = data = self.request(url, headers=self.headers).json()
data["date"] = text.parse_timestamp(data["created_at"] // 1000)
tags = []
for tag in data["tags"]:
types = self.TAG_TYPES
tags_data = data["tags"]
for tag in tags_data:
name = tag["name"]
namespace = tag.get("namespace", 0)
tags.append(self.TAG_TYPES[namespace] + ":" + name)
tags.append(types[namespace] + ":" + name)
data["tags"] = tags
data["date"] = text.parse_timestamp(data["created_at"] // 1000)
if self.config("tags", False):
tags = collections.defaultdict(list)
for tag in tags_data :
tags[tag.get("namespace", 0)].append(tag["name"])
for type, values in tags.items():
data["tags_" + types[type]] = values
try:
if self.cbz:

View File

@ -12,6 +12,7 @@ __tests__ = (
"#url" : "https://niyaniya.moe/g/14216/6c67076fdd45",
"#category": ("", "koharu", "gallery"),
"#class" : koharu.KoharuGalleryExtractor,
"#options" : {"tags": True},
"#pattern" : r"https://kisakisexo.xyz/download/59896/a4fbd1828229/f47639c6abaf1903dd69c36a3d961da84741a1831aa07a2906ce9c74156a5d75\?v=1721626410802&w=0",
"#count" : 1,
@ -43,6 +44,36 @@ __tests__ = (
"other:uncensored",
"other:vanilla",
],
"tags_artist": [
"ouchi kaeru",
],
"tags_female": [
"busty",
],
"tags_general": [
"beach",
"booty",
"dark skin",
"fingering",
"handjob",
"light hair",
"nakadashi",
"outdoors",
"ponytail",
"swimsuit",
"x-ray",
],
"tags_language": [
"english",
"translated",
],
"tags_magazine": [
"comic kairakuten 2024-08",
],
"tags_other": [
"uncensored",
"vanilla",
],
"title" : "[Ouchi Kaeru] Summer Business (Comic Kairakuten 2024-08)",
"updated_at": 1721626410802,
},