diff --git a/gallery_dl/extractor/kissmanga.py b/gallery_dl/extractor/kissmanga.py index 43423f19..711175ef 100644 --- a/gallery_dl/extractor/kissmanga.py +++ b/gallery_dl/extractor/kissmanga.py @@ -9,7 +9,7 @@ """Extract manga-chapters and entire manga from http://kissmanga.com/""" from .common import Extractor, Message -from .. import text, cloudflare +from .. import text, cloudflare, cache import re class KissmangaExtractor(Extractor): @@ -23,8 +23,18 @@ class KissmangaExtractor(Extractor): Extractor.__init__(self) self.url = match.group(0) self.session.headers["Referer"] = self.url_base + self.cookies = cache.cache(maxage=365*24*60*60, keyarg=0)(_cache_helper) - request = cloudflare.bypass(url_base, 24*60*60)(Extractor.request) + def request(self, url, cookies=None): + cookies = self.cookies(self.url_base, cookies) + if cookies: + self.session.cookies = cookies + response = self.session.get(url) + if response.status_code != 200: + self.cookies.invalidate(self.url_base) + cookies = cloudflare.solve_challenge(self.session, self.url_base) + response = self.request(url, cookies) + return response class KissmangaMangaExtractor(KissmangaExtractor): @@ -94,3 +104,7 @@ class KissmangaChapterExtractor(KissmangaExtractor): def get_image_urls(page): """Extract list of all image-urls for a manga chapter""" return list(text.extract_iter(page, 'lstImages.push("', '"')) + + +def _cache_helper(key, item=None): + return item diff --git a/gallery_dl/extractor/readcomiconline.py b/gallery_dl/extractor/readcomiconline.py index e3be8043..8ae7256c 100644 --- a/gallery_dl/extractor/readcomiconline.py +++ b/gallery_dl/extractor/readcomiconline.py @@ -8,26 +8,17 @@ """Extract comic-issues and entire comics from http://readcomiconline.to/""" -from .common import Extractor -from .. import text, cloudflare +from .. import text from . import kissmanga import re -class ReadcomiconlineExtractor(Extractor): +class ReadcomiconlineExtractor(kissmanga.KissmangaExtractor): """Base class for readcomiconline extractors""" category = "readcomiconline" directory_fmt = ["{category}", "{comic}", "{issue:>03}"] filename_fmt = "{comic}_{issue:>03}_{page:>03}.{extension}" url_base = "http://readcomiconline.to" - def __init__(self, match): - Extractor.__init__(self) - self.url = match.group(0) - self.session.headers["Referer"] = self.url_base - - - request = cloudflare.bypass(url_base, 30*60)(Extractor.request) - class ReadcomiconlineComicExtractor(ReadcomiconlineExtractor, kissmanga.KissmangaMangaExtractor):