diff options
| author | 2025-01-28 19:12:09 -0500 | |
|---|---|---|
| committer | 2025-01-28 19:12:09 -0500 | |
| commit | a26df18796ff4e506b16bf32fcec9336233b9e2e (patch) | |
| tree | 876512f59831cd670a90a0bc92bc85def6ea3d82 /gallery_dl/extractor/issuu.py | |
| parent | 0532a387ef5b7fcb4507a9b094dca37a5f635fe1 (diff) | |
New upstream version 1.28.5.upstream/1.28.5
Diffstat (limited to 'gallery_dl/extractor/issuu.py')
| -rw-r--r-- | gallery_dl/extractor/issuu.py | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/gallery_dl/extractor/issuu.py b/gallery_dl/extractor/issuu.py index 54c6539..b900113 100644 --- a/gallery_dl/extractor/issuu.py +++ b/gallery_dl/extractor/issuu.py @@ -54,26 +54,30 @@ class IssuuPublicationExtractor(IssuuBase, GalleryExtractor): class IssuuUserExtractor(IssuuBase, Extractor): """Extractor for all publications of a user/publisher""" subcategory = "user" - pattern = r"(?:https?://)?issuu\.com/([^/?#]+)/?$" + pattern = r"(?:https?://)?issuu\.com/([^/?#]+)(?:/(\d*))?$" example = "https://issuu.com/USER" - def __init__(self, match): - Extractor.__init__(self, match) - self.user = match.group(1) - def items(self): - url = "{}/call/profile/v1/documents/{}".format(self.root, self.user) - params = {"offset": 0, "limit": "25"} + user, pnum = self.groups + base = self.root + "/" + user + pnum = text.parse_int(pnum, 1) while True: - data = self.request(url, params=params).json() + url = base + "/" + str(pnum) if pnum > 1 else base + try: + html = self.request(url).text + data = util.json_loads(text.unescape(text.extr( + html, '</main></div><script data-json="', '" id="'))) + docs = data["docs"] + except Exception as exc: + self.log.debug("", exc_info=exc) + return - for publication in data["items"]: - publication["url"] = "{}/{}/docs/{}".format( - self.root, self.user, publication["uri"]) + for publication in docs: + url = self.root + "/" + publication["uri"] publication["_extractor"] = IssuuPublicationExtractor - yield Message.Queue, publication["url"], publication + yield Message.Queue, url, publication - if not data["hasMore"]: + if len(docs) < 48: return - params["offset"] += data["limit"] + pnum += 1 |
