diff options
Diffstat (limited to 'track_announce.liq')
| -rwxr-xr-x | track_announce.liq | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/track_announce.liq b/track_announce.liq new file mode 100755 index 0000000..8aac476 --- /dev/null +++ b/track_announce.liq @@ -0,0 +1,77 @@ +#!/usr/bin/liquidsoap + +# Radio Susan — with track announcements + +set("log.file.path", "/var/lib/radio/radio.log") +set("log.level", 3) +set("server.telnet", true) +set("server.telnet.port", 1234) +set("ffmpeg.content_type.parse_metadata", false) + +# State file for track metadata exchange +state_file = "/var/lib/radio/track_state.json" + +# Track counter +track_count = ref(0) + +music = playlist( + mode="randomize", + reload=3600, + reload_mode="watch", + "/var/lib/radio/playlists/all.m3u" +) +music = drop_video(music) + +# Write track metadata to state file on each new track +music = on_track(fun(m) -> begin + track_count := !track_count + 1 + artist = m["artist"] + title = m["title"] + count = !track_count + # Write JSON state file + data = '{"artist":"#{artist}","title":"#{title}","count":#{string_of(count)}}' + ignore(file.write(data=data, state_file)) + log("Track #{string_of(count)}: #{artist} - #{title}") +end, music) + +# Jingles +jingles = playlist( + mode="randomize", + "/var/lib/radio/jingles" +) +jingles = drop_video(jingles) +jingles = amplify(3.0, jingles) + +# Dynamic announcements +def get_announcement() = + result = list.hd(default="", process.read.lines("/usr/bin/python3 /var/lib/radio/announce_tracks.py --state")) + if result != "" then + log("Announcement: #{result}") + request.create(result) + else + # Fallback to a random jingle + null() + end +end + +announcements = request.dynamic(get_announcement) +announcements = drop_video(announcements) +announcements = amplify(3.0, announcements) + +# Rotate: 2 music tracks, then 1 announcement or jingle +radio = rotate(weights=[2, 1], [music, random(weights=[1, 1], [jingles, announcements])]) + +radio = mksafe(radio) + +output.icecast( + %mp3(bitrate=192), + host="localhost", + port=8910, + password="REDACTED", + mount="/stream", + name="Radio Susan", + description="Personal radio station", + genre="Eclectic", + url="https://radio.jihakuz.xyz", + radio +) |
