From 28798594e8dd165909ffd6d44578d7a109aae2a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Wed, 30 Aug 2023 18:35:03 +0200 Subject: [PATCH] [gfycat] update pagination logic (#4479) Some searches do not use cursor based pagination but an offset based one. --- gallery_dl/extractor/gfycat.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/gallery_dl/extractor/gfycat.py b/gallery_dl/extractor/gfycat.py index 53ef1180..a95dab85 100644 --- a/gallery_dl/extractor/gfycat.py +++ b/gallery_dl/extractor/gfycat.py @@ -248,7 +248,7 @@ class GfycatAPI(): def search(self, query): endpoint = "/v1/gfycats/search" - params = {"search_text": query, "count": 150} + params = {"search_text": query, "count": 100} return self._pagination(endpoint, params) def user(self, user): @@ -301,6 +301,12 @@ class GfycatAPI(): data = self._call(endpoint, params) yield from data[key] - if not data["cursor"]: + if data["cursor"]: + params["cursor"] = data["cursor"] + elif "cursor" in params: return - params["cursor"] = data["cursor"] + else: + start = params.get("start", 0) + if start + len(data[key]) >= data.get("found", 0): + return + params["start"] = start + params["count"]