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