webcomics/dosage

View on GitHub
scripts/comicskingdom.py

Summary

Maintainability
A
0 mins
Test Coverage
#!/usr/bin/env python3
# SPDX-License-Identifier: MIT
# SPDX-FileCopyrightText: © 2019 Tobias Gruetzmacher
# SPDX-FileCopyrightText: © 2019 Thomas W. Littauer
"""
Script to get a list of comicskingdom.com comics and save the info in a JSON
file for further processing.
"""

from scriptutil import ComicListUpdater
from dosagelib.xml import NS


class ComicsKingdomUpdater(ComicListUpdater):
    dup_templates = (
        "Creators/%s",
        "GoComics/%s",
        "KeenSpot/%s",
        "ComicGenesis/%s",
    )

    def handle_listing(self, page):
        for link in page.xpath('//ul[d:class("index")]//a', namespaces=NS):
            name = link.text_content().removeprefix('The ')
            url = link.attrib['href']
            lang = 'es' if ' (Spanish)' in name else None

            self.add_comic(name, (url, lang))

    def collect_results(self):
        """Parse all search result pages."""
        self.handle_listing(self.get_url('https://comicskingdom.com/features'))

    def get_entry(self, name: str, data: tuple[str, str]):
        opt = f", lang='{data[1]}'" if data[1] else ''
        return f"cls('{name}', '{data[0].split('/')[3]}'{opt}),"


if __name__ == '__main__':
    ComicsKingdomUpdater(__file__).run()