[gelbooru] fix --range for favorites (#3704)

pull/3849/head
Mike Fährmann 2 years ago
parent 1f82b00b8f
commit d94aa1ee02
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

@ -173,23 +173,39 @@ class GelbooruFavoriteExtractor(GelbooruBase,
"count": 3, "count": 3,
}) })
skip = GelbooruBase._skip_offset
def posts(self): def posts(self):
# get number of favorites # get number of favorites
params = { params = {
"s" : "favorite", "s" : "favorite",
"id" : self.favorite_id, "id" : self.favorite_id,
"limit": "1" "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:
self.offset -= last
diff, self.offset = divmod(self.offset, self.per_page)
pnum -= diff + 1
skip = self.offset
# paginate over them in reverse # paginate over them in reverse
params["pid"] = count // self.per_page params["pid"] = pnum
params["limit"] = self.per_page params["limit"] = self.per_page
while True: while True:
favs = self._api_request(params, "favorite") favs = self._api_request(params, "favorite")
favs.reverse() favs.reverse()
if skip:
favs = favs[skip:]
skip = 0
for fav in favs: for fav in favs:
yield from self._api_request({"id": fav["favorite"]}) yield from self._api_request({"id": fav["favorite"]})

Loading…
Cancel
Save