diff --git a/gallery_dl/extractor/fanbox.py b/gallery_dl/extractor/fanbox.py index d81fd0b8..d8337b6b 100644 --- a/gallery_dl/extractor/fanbox.py +++ b/gallery_dl/extractor/fanbox.py @@ -309,8 +309,20 @@ class FanboxCreatorExtractor(FanboxExtractor): self.creator_id = match.group(1) or match.group(2) def posts(self): - url = "https://api.fanbox.cc/post.listCreator?creatorId={}&limit=10" - return self._pagination(url.format(self.creator_id)) + url = "https://api.fanbox.cc/post.paginateCreator?creatorId=" + return self._pagination_creator(url + self.creator_id) + + def _pagination_creator(self, url): + urls = self.request(url, headers=self.headers).json()["body"] + for url in urls: + url = text.ensure_http_scheme(url) + body = self.request(url, headers=self.headers).json()["body"] + for item in body: + try: + yield self._get_post_data(item["id"]) + except Exception as exc: + self.log.warning("Skipping post %s (%s: %s)", + item["id"], exc.__class__.__name__, exc) class FanboxPostExtractor(FanboxExtractor): diff --git a/test/results/fanbox.py b/test/results/fanbox.py index 3031a759..850b7f33 100644 --- a/test/results/fanbox.py +++ b/test/results/fanbox.py @@ -133,9 +133,9 @@ __tests__ = ( "feeRequired": 300, "plan" : { "creatorId": "saki9184", - "fee" : 350, - "id" : "414274", - "title" : "涼宮ハルヒの憂鬱", + "fee" : 300, + "id" : "430208", + "title" : "ユーフォ、氷菓同人イラストR18", }, },