diff options
Diffstat (limited to 'gallery_dl/extractor/webtoons.py')
| -rw-r--r-- | gallery_dl/extractor/webtoons.py | 55 |
1 files changed, 21 insertions, 34 deletions
diff --git a/gallery_dl/extractor/webtoons.py b/gallery_dl/extractor/webtoons.py index 21f7c21..dc9a4f1 100644 --- a/gallery_dl/extractor/webtoons.py +++ b/gallery_dl/extractor/webtoons.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Copyright 2020 Leonardo Taccari -# Copyright 2021-2022 Mike Fährmann +# Copyright 2021-2023 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 @@ -18,10 +18,10 @@ BASE_PATTERN = r"(?:https?://)?(?:www\.)?webtoons\.com/(([^/?#]+)" class WebtoonsBase(): category = "webtoons" root = "https://www.webtoons.com" - cookiedomain = ".webtoons.com" + cookies_domain = ".webtoons.com" def setup_agegate_cookies(self): - self._update_cookies({ + self.cookies_update({ "atGDPR" : "AD_CONSENT", "needCCPA" : "false", "needCOPPA" : "false", @@ -46,6 +46,8 @@ class WebtoonsEpisodeExtractor(WebtoonsBase, GalleryExtractor): archive_fmt = "{title_no}_{episode_no}_{num}" pattern = (BASE_PATTERN + r"/([^/?#]+)/([^/?#]+)/(?:[^/?#]+))" r"/viewer(?:\?([^#'\"]+))") + example = ("https://www.webtoons.com/en/GENRE/TITLE/NAME/viewer" + "?title_no=123&episode_no=12345") test = ( (("https://www.webtoons.com/en/comedy/safely-endangered" "/ep-572-earth/viewer?title_no=352&episode_no=572"), { @@ -71,15 +73,18 @@ class WebtoonsEpisodeExtractor(WebtoonsBase, GalleryExtractor): ) def __init__(self, match): - self.path, self.lang, self.genre, self.comic, query = match.groups() + self.path, self.lang, self.genre, self.comic, self.query = \ + match.groups() - url = "{}/{}/viewer?{}".format(self.root, self.path, query) + url = "{}/{}/viewer?{}".format(self.root, self.path, self.query) GalleryExtractor.__init__(self, match, url) + + def _init(self): self.setup_agegate_cookies() - query = text.parse_query(query) - self.title_no = query.get("title_no") - self.episode_no = query.get("episode_no") + params = text.parse_query(self.query) + self.title_no = params.get("title_no") + self.episode_no = params.get("episode_no") def metadata(self, page): keywords, pos = text.extract( @@ -116,37 +121,19 @@ class WebtoonsComicExtractor(WebtoonsBase, Extractor): categorytransfer = True pattern = (BASE_PATTERN + r"/([^/?#]+)/([^/?#]+))" r"/list(?:\?([^#]+))") - test = ( - # english - (("https://www.webtoons.com/en/comedy/live-with-yourself/" - "list?title_no=919"), { - "pattern": WebtoonsEpisodeExtractor.pattern, - "range": "1-15", - "count": ">= 15", - }), - # french - (("https://www.webtoons.com/fr/romance/subzero/" - "list?title_no=1845&page=3"), { - "count": ">= 15", - }), - # (#820) - (("https://www.webtoons.com/en/challenge/scoob-and-shag/" - "list?title_no=210827&page=9"), { - "count": ">= 18", - }), - # (#1643) - ("https://www.webtoons.com/es/romance/lore-olympus/" - "list?title_no=1725"), - ) + example = "https://www.webtoons.com/en/GENRE/TITLE/list?title_no=123" def __init__(self, match): Extractor.__init__(self, match) + self.path, self.lang, self.genre, self.comic, self.query = \ + match.groups() + + def _init(self): self.setup_agegate_cookies() - self.path, self.lang, self.genre, self.comic, query = match.groups() - query = text.parse_query(query) - self.title_no = query.get("title_no") - self.page_no = text.parse_int(query.get("page"), 1) + params = text.parse_query(self.query) + self.title_no = params.get("title_no") + self.page_no = text.parse_int(params.get("page"), 1) def items(self): page = None |
