Glenn Thompson
|
dad1418bf8
|
Integrate cl-streamer into Asteroid Radio (replaces Icecast + Liquidsoap)
New files:
- stream-harmony.lisp: Bridge between cl-streamer pipeline and Asteroid app
- start-harmony-streaming / stop-harmony-streaming lifecycle
- on-harmony-track-change callback: feeds recently-played, DB track lookup
- harmony-now-playing: returns same alist format as icecast-now-playing
- harmony-load-playlist: loads M3U, converts Docker paths, feeds queue
- harmony-skip-track / harmony-get-status
Pipeline control (harmony-backend.lisp):
- Add pipeline-current-track, pipeline-on-track-change callback
- Add pipeline-skip, pipeline-queue-files, pipeline-get-queue, pipeline-clear-queue
- play-list now supports skip flag, queue consumption, loop-queue mode
- notify-track-change fires callback after crossfade completes
Graceful fallback - all touch points check *harmony-pipeline*:
- frontend-partials.lisp: now-playing endpoints try Harmony first, fall back to Icecast
- asteroid.lisp: admin APIs (status/skip/reload/restart) try Harmony first
- playlist-scheduler.lisp: load-scheduled-playlist tries Harmony first
- asteroid.asd: added cl-streamer subsystem dependencies
Docker scripts updated:
- start.sh / stop.sh: only start/stop postgres (cl-streamer replaces streaming)
|
2026-03-03 21:27:29 +03:00 |