diff --git a/gallery_dl/extractor/common.py b/gallery_dl/extractor/common.py index 000f79ae..13fd88a5 100644 --- a/gallery_dl/extractor/common.py +++ b/gallery_dl/extractor/common.py @@ -591,6 +591,10 @@ class Extractor(): return util.json_loads(text.extr( page, '")) + def _extract_nextdata(self, page): + return util.json_loads(text.extr( + page, ' id="__NEXT_DATA__" type="application/json">', "")) + def _prepare_ddosguard_cookies(self): if not self.cookies.get("__ddg2", domain=self.cookies_domain): self.cookies.set( diff --git a/gallery_dl/extractor/mangapark.py b/gallery_dl/extractor/mangapark.py index 63aaf917..6f7a2381 100644 --- a/gallery_dl/extractor/mangapark.py +++ b/gallery_dl/extractor/mangapark.py @@ -43,8 +43,7 @@ class MangaparkChapterExtractor(MangaparkBase, ChapterExtractor): ChapterExtractor.__init__(self, match, url) def metadata(self, page): - data = util.json_loads(text.extr( - page, 'id="__NEXT_DATA__" type="application/json">', '<')) + data = self._extract_nextdata(page) chapter = (data["props"]["pageProps"]["dehydratedState"] ["queries"][0]["state"]["data"]["data"]) manga = chapter["comicNode"]["data"] diff --git a/gallery_dl/extractor/patreon.py b/gallery_dl/extractor/patreon.py index e4a59857..866e93a2 100644 --- a/gallery_dl/extractor/patreon.py +++ b/gallery_dl/extractor/patreon.py @@ -286,15 +286,12 @@ class PatreonExtractor(Extractor): return [genmap[ft] for ft in filetypes] def _extract_bootstrap(self, page): - data = text.extr( - page, 'id="__NEXT_DATA__" type="application/json">', '', '')) + data = self._extract_nextdata(page) self.slideshow = slideshow = data["props"]["pageProps"]["slideshow"] return {