From ae9433898ab0ef0ab0ae3575fd69b70a1501efec Mon Sep 17 00:00:00 2001 From: Tony Miller Date: Tue, 6 Oct 2020 17:31:22 +0900 Subject: [PATCH 1/4] try to make an associative list of sources --- liquidsoap/radio.liq | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/liquidsoap/radio.liq b/liquidsoap/radio.liq index 1c2e2c6..7f77278 100755 --- a/liquidsoap/radio.liq +++ b/liquidsoap/radio.liq @@ -62,7 +62,7 @@ current_dj_connected_at = ref 0.0 last_dj_disconnected_at = ref 0.0 current_dump_filename = ref "" -stop_dump_f = ref (fun () -> ()) +recording_sources = ref [("", out(empty()))] live_dj = ref empty() @@ -160,23 +160,27 @@ def on_connect(headers) = ret = list.hd(default="",ret) log(ret) else + # else append to the old file (dont change the current_dump_filename) log("*****************************************APPENDING TO PREVIOUS DUMP***************************************************") end - # else append to the old file (dont change the current_dump_filename) + # add source to assoc list s = output.file(%mp3, "/home/liquidsoap/recordings/#{radio_name}-#{!current_dump_filename}.mp3", !live_dj, fallible=true, append=true) - stop_dump_f := fun () -> source.shutdown(s) + recording_sources := list.append([("#{!current_dj}", s)], !recording_sources) end def on_disconnect() = log("disconnected") last_dj_disconnected_at := gettimeofday() - # shutdown source title_prefix := "" last_dj_disconnected := !current_dj current_dj := "" + + # shutdown source of last_dj_disconnected dj sleep(60.0) - f = !stop_dump_f - f () + list.iter(fun(dj)-> log("#{fst(dj)}: #{snd(dj)}"), !recording_sources) + log("last_dj_disconnected: #{!last_dj_disconnected}") + s = list.assoc(!last_dj_disconnected, !recording_sources) + source.shutdown(s) end if crossfade_enabled == "true" then From de924ef744e121e1aced53b9df232dc3eff708e7 Mon Sep 17 00:00:00 2001 From: Tony Miller Date: Tue, 6 Oct 2020 19:03:39 +0900 Subject: [PATCH 2/4] use list.iter to shutdown sources --- liquidsoap/radio.liq | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/liquidsoap/radio.liq b/liquidsoap/radio.liq index 7f77278..6090b83 100755 --- a/liquidsoap/radio.liq +++ b/liquidsoap/radio.liq @@ -177,10 +177,17 @@ def on_disconnect() = # shutdown source of last_dj_disconnected dj sleep(60.0) + def shutdown_sources(dj) = + if fst(dj) == !last_dj_disconnected then + log("shutting down #{fst(dj)} source") + source.shutdown(snd(dj)) + end + end list.iter(fun(dj)-> log("#{fst(dj)}: #{snd(dj)}"), !recording_sources) log("last_dj_disconnected: #{!last_dj_disconnected}") - s = list.assoc(!last_dj_disconnected, !recording_sources) - source.shutdown(s) + list.iter(shutdown_sources, !recording_sources) + list.remove_assoc(!last_dj_disconnected, !recording_sources) + log("removed #{!last_dj_disconnected} source from recording_sources") end if crossfade_enabled == "true" then From a8db2ddec5459f38fb647629f60f8872ada44e65 Mon Sep 17 00:00:00 2001 From: Tony Miller Date: Tue, 6 Oct 2020 19:25:57 +0900 Subject: [PATCH 3/4] change recording_sources ref type --- liquidsoap/radio.liq | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/liquidsoap/radio.liq b/liquidsoap/radio.liq index 6090b83..3ff447e 100755 --- a/liquidsoap/radio.liq +++ b/liquidsoap/radio.liq @@ -62,7 +62,7 @@ current_dj_connected_at = ref 0.0 last_dj_disconnected_at = ref 0.0 current_dump_filename = ref "" -recording_sources = ref [("", out(empty()))] +recording_sources = ref [] live_dj = ref empty() From a3cb0974c8aa872d6b6f12fecc2698cf32584857 Mon Sep 17 00:00:00 2001 From: Tony Miller Date: Tue, 6 Oct 2020 19:46:52 +0900 Subject: [PATCH 4/4] remove sleep, see what happens --- liquidsoap/radio.liq | 1 - 1 file changed, 1 deletion(-) diff --git a/liquidsoap/radio.liq b/liquidsoap/radio.liq index 3ff447e..d02eda3 100755 --- a/liquidsoap/radio.liq +++ b/liquidsoap/radio.liq @@ -176,7 +176,6 @@ def on_disconnect() = current_dj := "" # shutdown source of last_dj_disconnected dj - sleep(60.0) def shutdown_sources(dj) = if fst(dj) == !last_dj_disconnected then log("shutting down #{fst(dj)} source")