aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/comick.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2025-09-07 20:40:52 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2025-09-07 20:40:52 -0400
commit88f40b9b0dc47fa22a209e8246d97a43f4b60cb2 (patch)
tree5764999c5d1ce99ccebd92dddb7a3914b55e43c2 /gallery_dl/extractor/comick.py
parent7ac1b3bb04430b981f4f796fd765499cdc8b67ec (diff)
parent243b2597edb922fe7e0b0d887e80bb7ebbe72ab7 (diff)
Update upstream source from tag 'upstream/1.30.6'
Update to upstream version '1.30.6' with Debian dir 9f14996b07ee3246bdcde2ec12796c77da2a3060
Diffstat (limited to 'gallery_dl/extractor/comick.py')
-rw-r--r--gallery_dl/extractor/comick.py47
1 files changed, 45 insertions, 2 deletions
diff --git a/gallery_dl/extractor/comick.py b/gallery_dl/extractor/comick.py
index 6c54156..a6aec38 100644
--- a/gallery_dl/extractor/comick.py
+++ b/gallery_dl/extractor/comick.py
@@ -8,7 +8,7 @@
"""Extractors for https://comick.io/"""
-from .common import ChapterExtractor, MangaExtractor, Message
+from .common import GalleryExtractor, ChapterExtractor, MangaExtractor, Message
from .. import text
from ..cache import memcache
@@ -21,6 +21,42 @@ class ComickBase():
root = "https://comick.io"
+class ComickCoversExtractor(ComickBase, GalleryExtractor):
+ """Extractor for comick.io manga covers"""
+ subcategory = "covers"
+ directory_fmt = ("{category}", "{manga}", "Covers")
+ filename_fmt = "{volume:>02}_{lang}.{extension}"
+ archive_fmt = "c_{id}"
+ pattern = BASE_PATTERN + r"/comic/([\w-]+)/cover"
+ example = "https://comick.io/comic/MANGA/cover"
+
+ def metadata(self, page):
+ manga = _manga_info(self, self.groups[0])
+ self.slug = manga['manga_slug']
+ return manga
+
+ def images(self, page):
+ url = f"{self.root}/comic/{self.slug}/cover"
+ page = self.request(url).text
+ data = self._extract_nextdata(page)
+
+ covers = data["props"]["pageProps"]["comic"]["md_covers"]
+ covers.reverse()
+
+ return [
+ (f"https://meo.comick.pictures/{cover['b2key']}", {
+ "id" : cover["id"],
+ "width" : cover["w"],
+ "height": cover["h"],
+ "size" : cover["s"],
+ "lang" : cover["locale"],
+ "volume": text.parse_int(cover["vol"]),
+ "cover" : cover,
+ })
+ for cover in covers
+ ]
+
+
class ComickChapterExtractor(ComickBase, ChapterExtractor):
"""Extractor for comick.io manga chapters"""
archive_fmt = "{chapter_hid}_{page}"
@@ -60,8 +96,15 @@ class ComickChapterExtractor(ComickBase, ChapterExtractor):
}
def images(self, page):
+ if not self._images[0].get("b2key") and all(
+ not img.get("b2key") for img in self._images):
+ self.log.error(
+ "%s: Broken Chapter (missing 'b2key' for all pages)",
+ self.groups[1])
+ return ()
+
return [
- ("https://meo.comick.pictures/" + img["b2key"], {
+ (f"https://meo.comick.pictures/{img['b2key']}", {
"width" : img["w"],
"height" : img["h"],
"size" : img["s"],