ingest: support multiple weighted OpenSubsonic playlists

RADIEO_SUBSONIC_PLAYLIST now accepts a comma-separated list of playlist
names or ids, each optionally weighted with a '=<number>' suffix (e.g.
'Chill=3, Focus, Party=2'); default weight is 1 and 0 disables an entry.
The provider caches each playlist independently and walks them in
weighted-random order on every pick, falling through past empty, renamed
or unreachable playlists so the source never stalls. Picking the
playlist first (by weight) then a song uniformly gives each its
configured share regardless of length.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
nemunaire 2026-07-04 16:30:21 +08:00
commit 40061446c9
5 changed files with 117 additions and 48 deletions

View file

@ -7,7 +7,10 @@
RADIEO_SUBSONIC_URL=https://subsonic.example.org
RADIEO_SUBSONIC_USER=monuser
RADIEO_SUBSONIC_PASSWORD=monmotdepasse
# Nom OU identifiant de la playlist à diffuser.
# Playlist(s) à diffuser : nom OU identifiant, séparés par des virgules.
# Chaque playlist peut être pondérée avec un suffixe '=<nombre>' (défaut : 1)
# pour ajuster sa fréquence de tirage ; un poids de 0 la désactive.
# RADIEO_SUBSONIC_PLAYLIST=Chill=3, Focus, Party=2
RADIEO_SUBSONIC_PLAYLIST=Radio
# --- Source yt-dlp ---