Throttle prefetch: only next+prev, 1s stagger, sequential

Reduced from 3 concurrent prefetches to 2 sequential with 1s
delay between them. Avoids hitting Danbooru's 10 req/s rate limit.
This commit is contained in:
pax 2026-04-05 00:28:35 -05:00
parent a5f33237dd
commit a9d177ee91

View File

@ -765,18 +765,18 @@ class BooruApp(QMainWindow):
self._prefetch_adjacent(index)
def _prefetch_adjacent(self, index: int) -> None:
"""Silently download the next and previous posts in the background."""
for offset in (1, -1, 2):
"""Silently download adjacent posts with staggered delays."""
async def _prefetch_batch():
for i, offset in enumerate((1, -1)):
adj = index + offset
if 0 <= adj < len(self._posts):
url = self._posts[adj].file_url
if url:
async def _prefetch(u=url):
if 0 <= adj < len(self._posts) and self._posts[adj].file_url:
if i > 0:
await asyncio.sleep(1)
try:
await download_image(u)
await download_image(self._posts[adj].file_url)
except Exception:
pass
self._run_async(_prefetch)
self._run_async(_prefetch_batch)
def _on_download_progress(self, downloaded: int, total: int) -> None:
if total > 0: