Add a second playback source and a weighted scheduler mixing it with Navidrome: - Scheduler picks a provider by SOURCE_WEIGHTS, falling through to the others when one has nothing ready, so no source can stall playback. - YtdlpProvider reads a hand-maintained config/urls.txt; container URLs (playlist/album/label/artist) are flat-extracted and one entry is drawn at random, honouring the anti-repeat window. Adds Track.source_url. - YtdlpFetcher downloads bestaudio via the yt-dlp library, reusing the atomic hidden-temp-then-rename pattern; Liquidsoap decodes the result. - Queue now dispatches to a fetcher registry keyed by backend. - Sweep orphaned download temp files on daemon startup (leftovers from a killed container otherwise pile up and trip the stream fallback). Verified end-to-end: yt-dlp opus decoded and served as 192 kbps MP3, and the 3:1 default mix observed in play history. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
20 lines
310 B
Text
20 lines
310 B
Text
# Fichiers audio et état du cache (ne pas versionner)
|
|
/cache/*
|
|
!/cache/.gitkeep
|
|
|
|
# Secrets locaux
|
|
.env
|
|
|
|
# Liste de sources yt-dlp personnelle (garder seulement l'exemple)
|
|
/config/urls.txt
|
|
|
|
# État de l'ingestion (base SQLite persistante)
|
|
/state/
|
|
*.db
|
|
*.db-journal
|
|
*.db-wal
|
|
|
|
# Python
|
|
__pycache__/
|
|
*.pyc
|
|
.venv/
|