radieo/ingest
Pierre-Olivier Mercier 49783218d8 ingest: rotate recently-played tracks oldest-first when anti-repeat is exhausted
When every candidate is within the anti-repeat window, the fallback replayed
at random, ignoring how long ago each was heard. With a small feed (or a
window larger than a source's pool) this is the *normal* path, and random
picking clusters the same tracks together.

Play the least-recently-heard candidate instead, so tracks rotate at the
widest spacing the pool allows.

- db: add last_played_at(keys) -> key -> most-recent play timestamp.
- providers/listenbrainz: sort the exhausted pool oldest-first.
- scheduler: on exhaustion, return the oldest-played of the drawn candidates
  rather than the last one drawn.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 16:41:43 +08:00
..
radieo ingest: rotate recently-played tracks oldest-first when anti-repeat is exhausted 2026-07-04 16:41:43 +08:00
Dockerfile Milestone 3: Navidrome (OpenSubsonic) playback provider 2026-07-02 17:57:38 +08:00
requirements.txt ingest: tag bandcamp downloads and correct label-account artists 2026-07-03 11:01:24 +08:00