diff options
Diffstat (limited to 'gallery_dl/extractor/readcomiconline.py')
| -rw-r--r-- | gallery_dl/extractor/readcomiconline.py | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/gallery_dl/extractor/readcomiconline.py b/gallery_dl/extractor/readcomiconline.py index e4075a2..c8b8c9a 100644 --- a/gallery_dl/extractor/readcomiconline.py +++ b/gallery_dl/extractor/readcomiconline.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2016-2021 Mike Fährmann +# Copyright 2016-2022 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 @@ -10,6 +10,7 @@ from .common import Extractor, ChapterExtractor, MangaExtractor from .. import text, exception +import binascii import re BASE_PATTERN = r"(?i)(?:https?://)?(?:www\.)?readcomiconline\.(?:li|to)" @@ -22,6 +23,7 @@ class ReadcomiconlineBase(): filename_fmt = "{comic}_{issue:>03}_{page:>03}.{extension}" archive_fmt = "{issue_id}_{page}" root = "https://readcomiconline.li" + browser = "firefox" def request(self, url, **kwargs): """Detect and handle redirects to CAPTCHA pages""" @@ -46,7 +48,7 @@ class ReadcomiconlineBase(): class ReadcomiconlineIssueExtractor(ReadcomiconlineBase, ChapterExtractor): """Extractor for comic-issues from readcomiconline.li""" subcategory = "issue" - pattern = BASE_PATTERN + r"(/Comic/[^/?#]+/[^/?#]+\?id=(\d+))" + pattern = BASE_PATTERN + r"(/Comic/[^/?#]+/[^/?#]+\?)([^#]+)" test = ("https://readcomiconline.li/Comic/W-i-t-c-h/Issue-130?id=22289", { "url": "30d29c5afc65043bfd384c010257ec2d0ecbafa6", "keyword": "2d9ec81ce1b11fac06ebf96ce33cdbfca0e85eb5", @@ -54,8 +56,18 @@ class ReadcomiconlineIssueExtractor(ReadcomiconlineBase, ChapterExtractor): def __init__(self, match): ChapterExtractor.__init__(self, match) - self.gallery_url += "&quality=hq" - self.issue_id = match.group(2) + + params = text.parse_query(match.group(2)) + quality = self.config("quality") + + if quality is None or quality == "auto": + if "quality" not in params: + params["quality"] = "hq" + else: + params["quality"] = str(quality) + + self.gallery_url += "&".join(k + "=" + v for k, v in params.items()) + self.issue_id = params.get("id") def metadata(self, page): comic, pos = text.extract(page, " - Read\r\n ", "\r\n") @@ -71,7 +83,7 @@ class ReadcomiconlineIssueExtractor(ReadcomiconlineBase, ChapterExtractor): def images(self, page): return [ - (url, None) + (beau(url), None) for url in text.extract_iter( page, 'lstImages.push("', '"' ) @@ -114,3 +126,18 @@ class ReadcomiconlineComicExtractor(ReadcomiconlineBase, MangaExtractor): "lang": "en", "language": "English", })) return results + + +def beau(url): + """https://readcomiconline.li/Scripts/rguard.min.js?v=1.1""" + if url.startswith("https"): + return url + + containsS0 = "=s0" in url + url = url[:-3 if containsS0 else -6] + url = url[4:22] + url[25:] + url = url[0:-6] + url[-2:] + url = binascii.a2b_base64(url).decode() + url = url[0:13] + url[17:] + url = url[0:-2] + ("=s0" if containsS0 else "=s1600") + return "https://2.bp.blogspot.com/" + url |
