From 7dfdcc3fbfc588de581cb422e6fb384dc66b0765 Mon Sep 17 00:00:00 2001 From: jakem72360 Date: Tue, 14 Jul 2020 05:20:09 +1000 Subject: [PATCH] [mangakakalot] Added extractors for MangaKakalot (#876) --- docs/supportedsites.rst | 1 + gallery_dl/extractor/__init__.py | 1 + gallery_dl/extractor/mangakakalot.py | 95 ++++++++++++++++++++++++++++ scripts/supportedsites.py | 1 + 4 files changed, 98 insertions(+) create mode 100644 gallery_dl/extractor/mangakakalot.py diff --git a/docs/supportedsites.rst b/docs/supportedsites.rst index 87b67331..7947e778 100644 --- a/docs/supportedsites.rst +++ b/docs/supportedsites.rst @@ -76,6 +76,7 @@ Manga Fox https://fanfox.net/ Chapters Manga Here https://www.mangahere.cc/ Chapters, Manga Manga Stream https://readms.net/ Chapters MangaDex https://mangadex.org/ Chapters, Manga +MangaKakalot https://mangakakalot.com/ Chapters, Manga Mangapanda https://www.mangapanda.com/ Chapters, Manga MangaPark https://mangapark.net/ Chapters, Manga Mangareader https://www.mangareader.net/ Chapters, Manga diff --git a/gallery_dl/extractor/__init__.py b/gallery_dl/extractor/__init__.py index 12dd36d4..31846633 100644 --- a/gallery_dl/extractor/__init__.py +++ b/gallery_dl/extractor/__init__.py @@ -68,6 +68,7 @@ modules = [ "mangadex", "mangafox", "mangahere", + "mangakakalot", "mangapanda", "mangapark", "mangareader", diff --git a/gallery_dl/extractor/mangakakalot.py b/gallery_dl/extractor/mangakakalot.py new file mode 100644 index 00000000..1aab55c6 --- /dev/null +++ b/gallery_dl/extractor/mangakakalot.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- + +# Copyright 2020 Jake Mannens +# +# 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. + +"""Extract manga-chapters and entire manga from https://mangakakalot.com/""" + +from .common import ChapterExtractor, MangaExtractor +from .. import text + + +class MangakakalotBase(): + """Base class for mangakakalot extractors""" + category = "mangakakalot" + root = "https://mangakakalot.com" + + @staticmethod + def parse_page(page, data): + """Parse metadata on 'page' and add it to 'data'""" + text.extract_all(page, ( + ("manga" , '

', '

'), + ('author' , '
  • Author(s) :\n', ''), + ), values=data) + data["author"] = text.remove_html(data["author"]) + return data + + +class MangakakalotChapterExtractor(MangakakalotBase, ChapterExtractor): + """Extractor for manga-chapters from mangakakalot.com""" + archive_fmt = "{manga}_{chapter}_{page}" + pattern = r"(?:https?://)?mangakakalot\.com(/chapter/([a-z]+\d+)/chapter_([0-9.]+))" + + def __init__(self, match): + self.path, self.url_title, self.chapter = match.groups() + ChapterExtractor.__init__(self, match, self.root + self.path) + self.session.headers['Referer'] = self.root + + def metadata(self, chapter_page): + page = self.request(self.root + "/manga/" + self.url_title).text + churl = self.root + self.path + chpage = self.request(churl).text + chapter, sep, minor = self.chapter.partition(".") + data = self.parse_page(page, { + "chapter": text.parse_int(chapter), + "chapter_minor": sep + minor, + "lang": "en", + "language": "English", + }) + pos = page.index('href="' + churl + '"') + data["title"] , pos = text.extract(page, '>', '<', pos) + x = chpage.index('\n', chpage.index('', pos) + return data + + def images(self, page): + x = page.index('
    ') + while True: + url, pos = text.extract(page, needle, '"', pos) + if not url: + return results + data["title"], pos = text.extract(page, '>', '', pos) + data["date"] , pos = text.extract(page, '', pos) + chapter, sep, minor = url.rpartition("/chapter_")[2].partition(".") + data["chapter"] = text.parse_int(chapter) + data["chapter_minor"] = sep + minor + results.append((url, data.copy())) diff --git a/scripts/supportedsites.py b/scripts/supportedsites.py index 1adfb8de..919e73dd 100755 --- a/scripts/supportedsites.py +++ b/scripts/supportedsites.py @@ -56,6 +56,7 @@ CATEGORY_MAP = { "mangadex" : "MangaDex", "mangafox" : "Manga Fox", "mangahere" : "Manga Here", + "mangakakalot" : "MangaKakalot", "mangapark" : "MangaPark", "mangastream" : "Manga Stream", "mastodon.social": "mastodon.social",