summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/issuu.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/extractor/issuu.py')
-rw-r--r--gallery_dl/extractor/issuu.py32
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