This commit is contained in:
67
radio.liq
67
radio.liq
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user