summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/gelbooru.py
diff options
context:
space:
mode:
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