From 86c8231fc685a673737fc11d1a03bec6982537a1 Mon Sep 17 00:00:00 2001 From: lambda Date: Tue, 28 Nov 2023 10:23:59 +0300 Subject: [PATCH] feat: add basic liquidsoap image config --- Dockerfile | 16 ++++++++++++++++ Makefile | 18 ++++++++++++++++++ main.liq | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 main.liq diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c550b04 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +FROM savonet/liquidsoap-alpine:v2.1.4 + +USER root + +RUN apk add tzdata +RUN cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime +RUN echo "Europe/Moscow" > /etc/timezone + +RUN mkdir -p /home/stream +RUN mkdir -p /home/stream/music +RUN chown -R liquidsoap:liquidsoap /home/stream + +USER liquidsoap +COPY main.liq /home/stream/script.liq + +CMD ["/home/stream/script.liq"] \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bb6f7e7 --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ +STORAGE_URL = gitea.bjornmossa.net +IMAGE_NAME = $(STORAGE_URL)/radioiceberg/liquidsoap +GIT_TAG = $(shell git describe --abbrev=0 --tags) + +login: + docker login $(STORAGE_URL) + +build: + docker build . -t $(IMAGE_NAME):$(GIT_TAG) + +bump-latest: + docker tag $(IMAGE_NAME):$(GIT_TAG) $(IMAGE_NAME):latest + +push-current: login + docker push $(IMAGE_NAME):$(GIT_TAG) + +push-latest: login + docker push $(IMAGE_NAME):latest diff --git a/main.liq b/main.liq new file mode 100644 index 0000000..cfdad68 --- /dev/null +++ b/main.liq @@ -0,0 +1,33 @@ +#!/usr/bin/liquidsoap + +settings.harbor.bind_addrs.set(["0.0.0.0"]) +enable_replaygain_metadata() + +def print_meta(data) + artist = data["artist"] + title = data["title"] + + meta = json() + meta.add("artist", artist) + meta.add("title", title) + + http.post(data=meta.stringify(), headers=[("Content-Type", "application/json; charset=UTF-8")], "metadata:4000") + () +end + +security = synth.all.sine(id="sine") +main_air_playlist = playlist("/music/main_air.pls") +general_playlist = replaygain(random([main_air_playlist])) +general_stream = normalize(crossfade(general_playlist)) +live_stream = input.harbor("iceberg-live", port=6000, user="djiceberg", password="hackme") + +radio = fallback(track_sensitive = false, [live_stream, general_stream, security]) + +radio.on_metadata(print_meta) + +output.icecast(%mp3, + host = "icecast", + port = 8000, + password = "hackme", + mount = "iceberg.ogg", + radio)