diff --git a/.gitignore b/.gitignore index e14928f..fa83782 100644 --- a/.gitignore +++ b/.gitignore @@ -32,8 +32,14 @@ build-sbcl.sh *.aac *.wma -# Docker music directory -docker/music/ +# Docker music directory - keep folder but ignore music files +docker/music/*.mp3 +docker/music/*.flac +docker/music/*.ogg +docker/music/*.wav +docker/music/*.m4a +docker/music/*.aac +docker/music/*.wma # Docker build artifacts docker/.env diff --git a/asteroid.asd b/asteroid.asd index 78fad7c..3fb20f8 100644 --- a/asteroid.asd +++ b/asteroid.asd @@ -24,6 +24,7 @@ :cl-fad :bordeaux-threads (:interface :auth) + :drakma (:interface :database) (:interface :user)) :pathname "./" diff --git a/asteroid.lisp b/asteroid.lisp index b0ece3f..55da662 100644 --- a/asteroid.lisp +++ b/asteroid.lisp @@ -307,7 +307,23 @@ ("artist" . "The Void") ("album" . "Startup Sounds"))) ("listeners" . 0) - ("stream-url" . "http://localhost:8000/asteroid")))) + ("stream-url" . "http://localhost:8000/asteroid.mp3") + ("stream-status" . "live")))) + +;; Live stream status from Icecast +(define-page icecast-status #@"/api/icecast-status" () + "Get live status from Icecast server" + (setf (radiance:header "Content-Type") "application/json") + (handler-case + (let* ((icecast-url "http://localhost:8000/status-json.xsl") + (response (drakma:http-request icecast-url :want-stream nil))) + (if response + (babel:octets-to-string response :encoding :utf-8) ; Convert response to string + (cl-json:encode-json-to-string + `(("error" . "Could not connect to Icecast server"))))) + (error (e) + (cl-json:encode-json-to-string + `(("error" . ,(format nil "Icecast connection failed: ~a" e))))))) ;; RADIANCE server management functions diff --git a/docker/docker-compose.yml.remote-backup b/docker/docker-compose.yml.remote-backup new file mode 100644 index 0000000..68c69e6 --- /dev/null +++ b/docker/docker-compose.yml.remote-backup @@ -0,0 +1,33 @@ +services: + icecast: + image: infiniteproject/icecast:latest + container_name: asteroid-icecast + ports: + - "8000:8000" + volumes: + - ./icecast.xml:/etc/icecast2/icecast.xml:ro + environment: + - ICECAST_SOURCE_PASSWORD=H1tn31EhsyLrfRmo + - ICECAST_ADMIN_PASSWORD=asteroid_admin_2024 + - ICECAST_RELAY_PASSWORD=asteroid_relay_2024 + restart: unless-stopped + networks: + - asteroid-network + + liquidsoap: + build: + context: . + dockerfile: Dockerfile.liquidsoap + container_name: asteroid-liquidsoap + depends_on: + - icecast + volumes: + - /mnt/remote-music/Music:/app/music:ro + - ./asteroid-radio-docker.liq:/app/asteroid-radio.liq:ro + restart: unless-stopped + networks: + - asteroid-network + +networks: + asteroid-network: + driver: bridge diff --git a/docker/music/.gitkeep b/docker/music/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/template/front-page.chtml b/template/front-page.chtml index e6871b8..dd83159 100644 --- a/template/front-page.chtml +++ b/template/front-page.chtml @@ -46,10 +46,47 @@
Artist: The Void
Track: Silence
-Album: Startup Sounds
-Duration: ∞
+Listeners: 0
+ +