From d22547ad3487b396ce9e5c7798ec8d4807bbf695 Mon Sep 17 00:00:00 2001 From: pax Date: Sun, 5 Apr 2026 19:12:55 -0500 Subject: [PATCH] Animated filter: scan up to 50 pages, don't stop on short batches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Short API pages (< limit) no longer stop the scan when animated filter is on — keeps looking through more pages. Only stops on truly empty API response or 50 page cap. --- booru_viewer/gui/app.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/booru_viewer/gui/app.py b/booru_viewer/gui/app.py index 2509217..6be7203 100644 --- a/booru_viewer/gui/app.py +++ b/booru_viewer/gui/app.py @@ -642,12 +642,16 @@ class BooruApp(QMainWindow): try: collected = [] current_page = page - max_pages = 20 if animated_only else 5 + max_pages = 50 if animated_only else 5 for _ in range(max_pages): batch = await client.search(tags=search_tags, page=current_page, limit=limit) + if not batch: + break filtered = _filter(batch) collected.extend(filtered) - if len(collected) >= limit or len(batch) < limit: + if len(collected) >= limit: + break + if len(batch) < limit and not animated_only: break current_page += 1 self._signals.search_append.emit(collected[:limit]) @@ -760,14 +764,18 @@ class BooruApp(QMainWindow): try: collected = [] current_page = page - max_pages = 20 if animated_only else 5 + max_pages = 50 if animated_only else 5 for _ in range(max_pages): batch = await client.search(tags=search_tags, page=current_page, limit=limit) + if not batch: + break # API returned nothing — end of results filtered = _filter(batch) collected.extend(filtered) log.debug(f"Backfill: page={current_page} batch={len(batch)} filtered={len(filtered)} total={len(collected)}/{limit}") - if len(collected) >= limit or len(batch) < limit: + if len(collected) >= limit: break + if len(batch) < limit and not animated_only: + break # short page = end (skip for animated — keep scanning) current_page += 1 self._signals.search_done.emit(collected[:limit]) except Exception as e: