Display current music
All checks were successful
ci / deploy (push) Successful in 2m30s

This commit is contained in:
2026-01-21 00:37:15 +01:00
parent f397ec62ed
commit 8ca5deebb2
6 changed files with 145 additions and 34 deletions

View File

@@ -10,6 +10,10 @@
hostname = environment.get(default="localhost", "HOSTNAME")
port = int_of_string(environment.get(default="8000", "PORT"))
folder_songs = "/songs"
folder_jingles = "/jingles"
folder_air_support = "/air-support"
# Log configuration
log.file.path := "/var/log/liquidsoap/radio-bullshit.log"
log.level := 3
@@ -23,7 +27,7 @@ songs = playlist(
mode="randomize",
reload=60,
reload_mode="watch",
"/songs/playlist.pls"
"#{folder_songs}/playlist.pls"
)
# Jingles playlist
@@ -31,7 +35,7 @@ jingles = playlist(
mode="randomize",
reload=60,
reload_mode="watch",
"/jingles/playlist.pls"
"#{folder_jingles}/playlist.pls"
)
# Air support (fallback audio when nothing else is available)
@@ -39,16 +43,54 @@ air_support = mksafe(
playlist(
mode="randomize",
reload_mode="watch",
"/air-support/playlist.pls"
"#{folder_air_support}/playlist.pls"
)
)
# ============================================================================
# METADATA UPDATE
# ============================================================================
def enrich_metadata(folder, m)
entry = process.read("/opt/met_extractor.py #{folder}/playlist.json '#{metadata.filename(m)}'")
let json.parse (entry :
{
index: int?,
file: string?,
title: string?,
duration: float?
}
) = entry
[("title", "#{entry.title}")]
end
songs = map_metadata(
fun (m) -> begin
enrich_metadata(folder_songs, m)
end,
songs
)
jingles = map_metadata(
fun (m) -> begin
enrich_metadata(folder_jingles, m)
end,
jingles
)
air_support = map_metadata(
fun (m) -> begin
enrich_metadata(folder_air_support, m)
end,
air_support
)
# ============================================================================
# ALTERNATING LOGIC
# ============================================================================
# Alternate between songs and jingles: play 1 jingle, then 4 songs
# This creates a pattern: jingle, song, song, song, song, jingle, ...
# This creates a pattern: jingle, song, jingle, ...
radio = rotate(
weights=[1, 1],
[jingles, songs]
@@ -112,14 +154,13 @@ harbor.http.register(
)
# Status endpoint (JSON)
# harbor.http.register(
# port=port,
# method="GET",
# "/status.json",
# fun (_, response) -> begin
# status = '{"status":"online","stream":"Radio Bullshit","mount":"/radio-bullshit"}'
# response.json(parse_json(status))
# end
# )
harbor.http.register(
port=port,
method="GET",
"/status.json",
fun (_, response) -> begin
response.json(radio.last_metadata() ?? [("status", "down")])
end
)
log("Radio Bullshit is now streaming on http://#{hostname}:#{port}/radio-bullshit")