diff options
Diffstat (limited to 'gallery_dl/extractor/comick.py')
| -rw-r--r-- | gallery_dl/extractor/comick.py | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/gallery_dl/extractor/comick.py b/gallery_dl/extractor/comick.py index a6aec38..c76694c 100644 --- a/gallery_dl/extractor/comick.py +++ b/gallery_dl/extractor/comick.py @@ -9,7 +9,7 @@ """Extractors for https://comick.io/""" from .common import GalleryExtractor, ChapterExtractor, MangaExtractor, Message -from .. import text +from .. import text, exception from ..cache import memcache BASE_PATTERN = r"(?:https?://)?(?:www\.)?comick\.io" @@ -67,9 +67,35 @@ class ComickChapterExtractor(ComickBase, ChapterExtractor): def metadata(self, page): slug, chstr = self.groups manga = _manga_info(self, slug) - props = _chapter_info(self, manga, chstr) - ch = props["chapter"] + while True: + try: + props = _chapter_info(self, manga, chstr) + except exception.HttpError as exc: + if exc.response.status_code != 404: + raise + if exc.response.headers.get( + "Content-Type", "").startswith("text/html"): + if locals().get("_retry_buildid"): + raise + self.log.debug("Updating Next.js build ID") + _retry_buildid = True + _manga_info.cache.clear() + manga = _manga_info(self, slug) + continue + if b'"notFound":true' in exc.response.content: + raise exception.NotFoundError("chapter") + raise + + if "__N_REDIRECT" in props: + path = props["__N_REDIRECT"] + self.log.debug("Following redirect to %s", path) + _, slug, chstr = path.rsplit("/", 2) + continue + + ch = props["chapter"] + break + self._images = ch["md_images"] if chapter := ch["chap"]: |
