Add daemon restart, preview diagnostics, browse caching, and rate-limit pauses
This commit is contained in:
@@ -157,6 +157,25 @@ Previews run after every walk:
|
||||
(`VESKSLOP_MEDIA_PREVIEW_BATCH`, `VESKSLOP_MEDIA_PREVIEW_BATCH_PAUSE_MS`), because bursts of
|
||||
thumbnail fetches trigger Discord and provider rate limits. A batch counts rows, not successes.
|
||||
|
||||
## Rate limits
|
||||
|
||||
Discord and the provider APIs throttle bursts. The engine detects limiting and holds all media
|
||||
traffic:
|
||||
|
||||
- A `429` from a preview or download fetch pauses the pass; the row stays pending (never marked as a
|
||||
permanent error) and is retried later.
|
||||
- A walk page that fails with a `429` or a rate-limit message registers a cooldown, and every page
|
||||
and preview waits it out before continuing.
|
||||
- The pause is `VESKSLOP_MEDIA_RATELIMIT_PAUSE_MS` (default 60 s), or the server's `Retry-After`
|
||||
when it is longer. Detection is logged as `rate limit detected; pausing media traffic until …`.
|
||||
|
||||
## Browsing cache
|
||||
|
||||
Browsing never calls Discord. The grid renders cached previews or local files only; videos without
|
||||
a cached still show a labeled placeholder, and playback streams only when the user presses play.
|
||||
GIF hover plays the animated GIF cached in `thumbs/` (the original is kept alongside the static
|
||||
frame and referenced by `anim_hash`), never the provider, so scrolling cannot spam anyone.
|
||||
|
||||
## Job states
|
||||
|
||||
`queued`, `running`, `paused`, `stopping`, `done`, `failed`, `pending-delete`, `deleting`, `deleted`.
|
||||
|
||||
Reference in New Issue
Block a user