Milestone 2: ingestion daemon driving the stream
Add the Python `ingest` container exposing `GET /next`, which returns the next track as an annotated Liquidsoap URI (or an empty body when nothing is ready). Liquidsoap switches from a static playlist to a `request.dynamic` source pulling from the daemon, with the local cache as fallback and mksafe for guaranteed continuous output. For now the daemon just cycles through the files already in the cache; the download providers (Navidrome, yt-dlp, ListenBrainz) come in later milestones. Also commit the implementation plan (PLAN.md). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
29ab0be7cb
commit
f8eb0655eb
9 changed files with 247 additions and 19 deletions
|
|
@ -1,9 +1,21 @@
|
|||
services:
|
||||
ingest:
|
||||
build: ./ingest
|
||||
image: radieo-ingest
|
||||
volumes:
|
||||
- ./cache:/cache # volume partagé avec le stream
|
||||
environment:
|
||||
- RADIEO_CACHE_DIR=/cache
|
||||
- RADIEO_HTTP_PORT=8080
|
||||
restart: unless-stopped
|
||||
|
||||
stream:
|
||||
build: ./stream
|
||||
image: radieo-stream
|
||||
depends_on:
|
||||
- ingest
|
||||
ports:
|
||||
- "8000:8000" # flux HTTP : http://localhost:8000/radio.mp3
|
||||
- "8000:8000" # flux HTTP : http://localhost:8000/radio.mp3
|
||||
volumes:
|
||||
- ./cache:/cache:ro # jalon 1 : lecture seule, rempli à la main
|
||||
- ./cache:/cache:ro # lecture seule : secours + résolution des chemins
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue