diff options
| author | 2025-09-07 20:40:52 -0400 | |
|---|---|---|
| committer | 2025-09-07 20:40:52 -0400 | |
| commit | 88f40b9b0dc47fa22a209e8246d97a43f4b60cb2 (patch) | |
| tree | 5764999c5d1ce99ccebd92dddb7a3914b55e43c2 /gallery_dl/extractor/comick.py | |
| parent | 7ac1b3bb04430b981f4f796fd765499cdc8b67ec (diff) | |
| parent | 243b2597edb922fe7e0b0d887e80bb7ebbe72ab7 (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.py | 47 |
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"], |
