[exhentai] fix pagination (#3181)

This commit is contained in:
Mike Fährmann
2022-11-09 11:15:34 +01:00
parent 05255f5be0
commit 6a0c5e34f4

View File

@@ -490,15 +490,18 @@ class ExhentaiSearchExtractor(ExhentaiExtractor):
self.params = {"f_search": tag, "page": 0} self.params = {"f_search": tag, "page": 0}
else: else:
self.params = text.parse_query(query) self.params = text.parse_query(query)
self.params["page"] = text.parse_int(self.params.get("page")) if "next" not in self.params:
self.params["page"] = text.parse_int(self.params.get("page"))
def items(self): def items(self):
self.login() self.login()
data = {"_extractor": ExhentaiGalleryExtractor} data = {"_extractor": ExhentaiGalleryExtractor}
search_url = self.search_url
params = self.params
while True: while True:
last = None last = None
page = self.request(self.search_url, params=self.params).text page = self.request(search_url, params=params).text
for gallery in ExhentaiGalleryExtractor.pattern.finditer(page): for gallery in ExhentaiGalleryExtractor.pattern.finditer(page):
url = gallery.group(0) url = gallery.group(0)
@@ -507,9 +510,17 @@ class ExhentaiSearchExtractor(ExhentaiExtractor):
last = url last = url
yield Message.Queue, url + "/", data yield Message.Queue, url + "/", data
if 'class="ptdd">&gt;<' in page or ">No hits found</p>" in page: next_url = text.extr(page, 'nexturl = "', '"', None)
if next_url is not None:
if not next_url:
return
search_url = next_url
params = None
elif 'class="ptdd">&gt;<' in page or ">No hits found</p>" in page:
return return
self.params["page"] += 1 else:
params["page"] += 1
class ExhentaiFavoriteExtractor(ExhentaiSearchExtractor): class ExhentaiFavoriteExtractor(ExhentaiSearchExtractor):