summaryrefslogtreecommitdiffstatshomepage
path: root/src/hircine/plugins/scrapers/handlers/dynastyscans.py
blob: ded015bb62734682cd0c39c686c398f5bb003ef4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import hircine.enums as enums
from hircine.scraper import ScrapeWarning
from hircine.scraper.types import (
    Artist,
    Circle,
    Date,
    Language,
    Title,
)
from hircine.scraper.utils import parse_dict


class DynastyScansHandler:
    source = "dynastyscans"

    def scrape(self, data):
        parsers = {
            "date": Date.from_iso,
            "lang": self.parse_language,
            "author": Artist,
            "group": Circle,
        }

        yield from parse_dict(parsers, data)

        if manga := data.get("manga"):
            title = manga

            if chapter := data.get("chapter"):
                title = title + f" Ch. {chapter}"

            if subtitle := data.get("title"):
                title = title + f": {subtitle}"

            yield Title(title)

    def parse_language(self, input):
        try:
            return Language(value=enums.Language[input.upper()])
        except (KeyError, ValueError) as e:
            raise ScrapeWarning(f"Could not parse language: '{input}'") from e