summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/gelbooru.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2024-01-08 03:22:24 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2024-01-08 03:22:24 -0500
commite949aaf6f6ac93896947d5b736e48e7911926efb (patch)
treeb73090d78cd83dee0f85b385a25dcf623ac12f2d /gallery_dl/extractor/gelbooru.py
parent4d7a4f1ecef2c96269f3590335d2834ebcdd50bf (diff)
New upstream version 1.26.6.upstream/1.26.6
Diffstat (limited to 'gallery_dl/extractor/gelbooru.py')
-rw-r--r--gallery_dl/extractor/gelbooru.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/gallery_dl/extractor/gelbooru.py b/gallery_dl/extractor/gelbooru.py
index b62ff78..eba1539 100644
--- a/gallery_dl/extractor/gelbooru.py
+++ b/gallery_dl/extractor/gelbooru.py
@@ -32,10 +32,13 @@ class GelbooruBase():
url = self.root + "/index.php?page=dapi&q=index&json=1"
data = self.request(url, params=params).json()
- if key not in data:
- return ()
+ try:
+ posts = data[key]
+ except KeyError:
+ self.log.error("Incomplete API response (missing '%s')", key)
+ self.log.debug("%s", data)
+ return []
- posts = data[key]
if not isinstance(posts, list):
return (posts,)
return posts
@@ -165,15 +168,16 @@ class GelbooruFavoriteExtractor(GelbooruBase,
"id" : self.favorite_id,
"limit": "1",
}
- count = self._api_request(params, "@attributes")[0]["count"]
+ count = self._api_request(params, "@attributes")[0]["count"]
if count <= self.offset:
return
- pnum, last = divmod(count + 1, self.per_page)
- if self.offset >= last:
+ pnum, last = divmod(count-1, self.per_page)
+ if self.offset > last:
+ # page number change
self.offset -= last
- diff, self.offset = divmod(self.offset, self.per_page)
+ diff, self.offset = divmod(self.offset-1, self.per_page)
pnum -= diff + 1
skip = self.offset
@@ -183,8 +187,8 @@ class GelbooruFavoriteExtractor(GelbooruBase,
while True:
favs = self._api_request(params, "favorite")
-
favs.reverse()
+
if skip:
favs = favs[skip:]
skip = 0