Milestone 4: yt-dlp provider and weighted source scheduler
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>
This commit is contained in:
parent
8c27498632
commit
d1db6a11d8
13 changed files with 418 additions and 46 deletions
|
|
@ -5,6 +5,7 @@ services:
|
|||
volumes:
|
||||
- ./cache:/cache # volume partagé avec le stream (rw : téléchargements)
|
||||
- ./state:/state # état persistant (SQLite) hors du cache éphémère
|
||||
- ./config:/config:ro # config éditable sans rebuild (urls.txt yt-dlp)
|
||||
environment:
|
||||
- RADIEO_CACHE_DIR=/cache
|
||||
- RADIEO_STATE_DIR=/state
|
||||
|
|
@ -16,6 +17,11 @@ services:
|
|||
- RADIEO_NAVIDROME_PASSWORD=${RADIEO_NAVIDROME_PASSWORD:-}
|
||||
- RADIEO_NAVIDROME_PLAYLIST=${RADIEO_NAVIDROME_PLAYLIST:-}
|
||||
- RADIEO_RETENTION_KEEP=${RADIEO_RETENTION_KEEP:-20}
|
||||
# Source yt-dlp : liste d'URL dans config/urls.txt (créer depuis l'exemple).
|
||||
- RADIEO_YTDLP_URLS_FILE=/config/urls.txt
|
||||
# Dosage du mix entre les sources (0 désactive).
|
||||
- RADIEO_WEIGHT_NAVIDROME=${RADIEO_WEIGHT_NAVIDROME:-3}
|
||||
- RADIEO_WEIGHT_YTDLP=${RADIEO_WEIGHT_YTDLP:-1}
|
||||
restart: unless-stopped
|
||||
|
||||
stream:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue