feat: stream generation refactor

Online playlist organized in folders instead of playlists

Handle events for live show start and end
main
lambda 2 years ago
parent 25e7fcd466
commit 718fc1feea

@ -1,4 +1,4 @@
FROM savonet/liquidsoap-alpine:v2.1.4 FROM savonet/liquidsoap-alpine:v2.2.2
USER root USER root

@ -4,25 +4,55 @@ settings.harbor.bind_addrs.set(["0.0.0.0"])
enable_replaygain_metadata() enable_replaygain_metadata()
def print_meta(data) def print_meta(data)
artist = data["artist"] a = data["artist"]
title = data["title"] t = data["title"]
meta = json() message = json()
meta.add("artist", artist) message.add("command", "metadataChange");
meta.add("title", title) message.add("data", { artist = a, title = t})
http.post(data=meta.stringify(), headers=[("Content-Type", "application/json; charset=UTF-8")], "metadata:4000") http.post(data=message.stringify(), headers=[("Content-Type", "application/json; charset=UTF-8")], "metadata:4000")
() ()
end end
security = synth.all.sine(id="sine") def live_start(_)
main_air_playlist = playlist("/music/main_air.pls") message = json()
general_playlist = replaygain(random([main_air_playlist])) message.add("command", "liveStarted");
general_stream = normalize(crossfade(general_playlist)) http.post(data=message.stringify(), headers=[("Content-Type", "application/json; charset=UTF-8")], "metadata:4000")
live_stream = input.harbor("iceberg-live", port=6000, user="djiceberg", password="hackme") ()
end
radio = fallback(track_sensitive = false, [live_stream, general_stream, security]) def live_end()
message = json()
message.add("command", "liveEnded");
http.post(data=message.stringify(), headers=[("Content-Type", "application/json; charset=UTF-8")], "metadata:4000")
()
end
security = single("/music/jingle.mp3")
arctica_music = playlist("/music/arctica/music")
arctica_jingles = playlist("/music/arctica/jingles")
arctica = replaygain(rotate(weights=[5, 1], [arctica_music, arctica_jingles]))
jellyfish_migrations_music = playlist("/music/main_air")
jellyfish_migrations = replaygain(jellyfish_migrations_music)
general_stream = normalize(switch([
({13h-15h}, arctica),
({true}, jellyfish_migrations)
]))
live_stream = input.harbor(
"iceberg-live",
port=6000,
user="djiceberg",
password="hackme",
on_connect=live_start,
on_disconnect=live_end
)
radio = fallback(track_sensitive = false, [live_stream, general_stream, security])
radio.on_metadata(print_meta) radio.on_metadata(print_meta)
output.icecast(%mp3, output.icecast(%mp3,