# -*- coding: utf-8 -*- # Copyright 2015-2017 Mike Fährmann # # 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 http://kissmanga.com/""" from .common import Extractor, MangaExtractor, Message from .. import text, cloudflare, aes from ..cache import cache import re import hashlib import ast IV = [ 0xa5, 0xe8, 0xe2, 0xe9, 0xc2, 0x72, 0x1b, 0xe0, 0xa8, 0x4a, 0xd6, 0x60, 0xc4, 0x72, 0xc1, 0xf3 ] class KissmangaExtractor(Extractor): """Base class for kissmanga extractors""" category = "kissmanga" directory_fmt = ["{category}", "{manga}", "c{chapter:>03}{chapter_minor} - {title}"] filename_fmt = ("{manga}_c{chapter:>03}{chapter_minor}_" "{page:>03}.{extension}") root = "http://kissmanga.com" def __init__(self, match): Extractor.__init__(self) self.url = match.group(0) self.session.headers["Referer"] = self.root request = cloudflare.request_func class KissmangaMangaExtractor(KissmangaExtractor, MangaExtractor): """Extractor for manga from kissmanga.com""" pattern = [r"(?i)(?:https?://)?(?:www\.)?kissmanga\.com/Manga/[^/]+/?$"] test = [ ("http://kissmanga.com/Manga/Dropout", { "url": "992befdd64e178fe5af67de53f8b510860d968ca", }), ("http://kissmanga.com/manga/feng-shen-ji", None), ] def chapter_paths(self, page): return text.extract_iter(page, '\n', 0, pos) + 31 end = page.index('', pos) yield page[beg:end] @cache(maxage=3600) def _chko_from_external_script(self): script = self.request(self.root + "/Scripts/lo.js").text pos = script.index("var chko") var = text.extract(script, "=", "[", pos)[0].lstrip() idx = text.extract(script, "[", "]", pos)[0] pos = script.index(var) lst = text.extract(script, "=", ";", pos)[0] return ast.literal_eval(lst.strip())[int(idx)]