summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/readcomiconline.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2022-04-29 01:58:56 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2022-04-29 01:58:56 -0400
commitc6b88a96bd191711fc540d7babab3d2e09c68da8 (patch)
tree288f3641ea19865740191b452da8832021772b8c /gallery_dl/extractor/readcomiconline.py
parent2fe1dfed848fc26b7419e3bfe91a62e686960429 (diff)
New upstream version 1.21.2.upstream/1.21.2
Diffstat (limited to 'gallery_dl/extractor/readcomiconline.py')
-rw-r--r--gallery_dl/extractor/readcomiconline.py37
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