From 2c75143ae3eb505ad4fd114c0ea3469a3493d871 Mon Sep 17 00:00:00 2001 From: Tony Miller Date: Thu, 17 Sep 2020 15:48:26 -0700 Subject: [PATCH 1/6] use reopen_when with output.file This may fix the recordings getting smashed together. --- liquidsoap/radio.liq | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/liquidsoap/radio.liq b/liquidsoap/radio.liq index 1c2e2c6..88ad97e 100755 --- a/liquidsoap/radio.liq +++ b/liquidsoap/radio.liq @@ -61,6 +61,8 @@ last_dj_disconnected = ref "" current_dj_connected_at = ref 0.0 last_dj_disconnected_at = ref 0.0 current_dump_filename = ref "" +current_file = ref "" +next_file = ref "" stop_dump_f = ref (fun () -> ()) @@ -147,24 +149,37 @@ def on_connect(headers) = log("last_dj_disconnected_at: #{!last_dj_disconnected_at}") if (!last_dj_disconnected_at == 0.0) then log("*****************************************CREATING NEW DUMP, last_dj_disconnected_at is null***************************************************") - current_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" + next_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" log("sending live notification") ret = get_process_lines("./live_notification.sh 'LIVE - #{!current_dj}'") ret = list.hd(default="",ret) log(ret) elsif (((!current_dj_connected_at - !last_dj_disconnected_at) > 60.0) or (!current_dj != !last_dj_disconnected)) then log("*****************************************CREATING NEW DUMP***************************************************") - current_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" + next_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" log("sending live notification") ret = get_process_lines("./live_notification.sh 'LIVE - #{!current_dj}'") ret = list.hd(default="",ret) log(ret) else log("*****************************************APPENDING TO PREVIOUS DUMP***************************************************") + # else append to the old file (dont change the current_dump_filename) + if current_dump_filename == "" then + next_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" + end + end + # s = output.file(%mp3, "/home/liquidsoap/recordings/#{radio_name}-#{!current_dump_filename}.mp3", !live_dj, fallible=true, append=true, reopen_when=reopen_when) + # stop_dump_f := fun () -> source.shutdown(s) +end + +def reopen_when() = + # what do i assign to next_file ??? + if !current_dump_filename != !next_dump_filename then + current_dump_filename := !next_dump_filename + true + else + false end - # else append to the old file (dont change the current_dump_filename) - 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) end def on_disconnect() = @@ -174,9 +189,9 @@ def on_disconnect() = title_prefix := "" last_dj_disconnected := !current_dj current_dj := "" - sleep(60.0) - f = !stop_dump_f - f () + # sleep(60.0) + # f = !stop_dump_f + # f () end if crossfade_enabled == "true" then @@ -228,6 +243,8 @@ source = on_track(pub_metadata, source) source = server.insert_metadata(id="fallback", source) +output.file(%mp3, "/home/liquidsoap/recordings/#{radio_name}-#{!current_dump_filename}.mp3", !live_dj, fallible=true, append=true, reopen_when=reopen_when) + clock.assign_new(id="vorbis_icecast", [output.icecast(%vorbis,id="icecast", mount="#{radio_name}.ogg", host=icecast_host, port=int_of_string(icecast_port), password="hackme", From a154e82883acf7ded0ab47b4d67c6e801c7f052c Mon Sep 17 00:00:00 2001 From: Tony Miller Date: Fri, 18 Sep 2020 17:03:53 -0700 Subject: [PATCH 2/6] try to use reopen_when --- liquidsoap/radio.liq | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/liquidsoap/radio.liq b/liquidsoap/radio.liq index 88ad97e..c9879ab 100755 --- a/liquidsoap/radio.liq +++ b/liquidsoap/radio.liq @@ -7,9 +7,9 @@ set("log.file.path","/var/log/liquidsoap.log") set("log.stdout",true) set("log.level",4) -set("server.telnet",true) -set("server.socket",true) -set("server.socket.path","/home/liquidsoap/tracks/liquidsoap.sock") +# set("server.telnet",true) +# set("server.socket",true) +# set("server.socket.path","/home/liquidsoap/tracks/liquidsoap.sock") set("harbor.bind_addrs",["0.0.0.0"]) @@ -61,8 +61,7 @@ last_dj_disconnected = ref "" current_dj_connected_at = ref 0.0 last_dj_disconnected_at = ref 0.0 current_dump_filename = ref "" -current_file = ref "" -next_file = ref "" +next_dump_filename = ref "" stop_dump_f = ref (fun () -> ()) @@ -143,6 +142,7 @@ end def on_connect(headers) = log("on_connect") + log("current_dj: #{!current_dj}") list.iter(fun(header)-> log("#{fst(header)}: #{snd(header)}"), headers) # if they disconnected over 60 seconds ago, use new filename log("current_dj_connected_at: #{!current_dj_connected_at}") @@ -150,6 +150,10 @@ def on_connect(headers) = if (!last_dj_disconnected_at == 0.0) then log("*****************************************CREATING NEW DUMP, last_dj_disconnected_at is null***************************************************") next_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" + if !current_dump_filename == "" then + log("assigning current_dump_filename") + current_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" + end log("sending live notification") ret = get_process_lines("./live_notification.sh 'LIVE - #{!current_dj}'") ret = list.hd(default="",ret) @@ -157,6 +161,10 @@ def on_connect(headers) = elsif (((!current_dj_connected_at - !last_dj_disconnected_at) > 60.0) or (!current_dj != !last_dj_disconnected)) then log("*****************************************CREATING NEW DUMP***************************************************") next_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" + if !current_dump_filename == "" then + log("assigning current_dump_filename") + current_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" + end log("sending live notification") ret = get_process_lines("./live_notification.sh 'LIVE - #{!current_dj}'") ret = list.hd(default="",ret) @@ -164,17 +172,23 @@ def on_connect(headers) = else log("*****************************************APPENDING TO PREVIOUS DUMP***************************************************") # else append to the old file (dont change the current_dump_filename) - if current_dump_filename == "" then + if !current_dump_filename == "" then + log("assigning current_dump_filename and next_dump_filename") + current_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" next_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" end end + log("current_dump_filename: #{!current_dump_filename}") + log("next_dump_filename: #{!next_dump_filename}") # s = output.file(%mp3, "/home/liquidsoap/recordings/#{radio_name}-#{!current_dump_filename}.mp3", !live_dj, fallible=true, append=true, reopen_when=reopen_when) # stop_dump_f := fun () -> source.shutdown(s) end def reopen_when() = # what do i assign to next_file ??? + log("in reopen_when") if !current_dump_filename != !next_dump_filename then + log("current_dump_filename != next_dump_filename !! reassigning current to next...") current_dump_filename := !next_dump_filename true else @@ -189,6 +203,7 @@ def on_disconnect() = title_prefix := "" last_dj_disconnected := !current_dj current_dj := "" + next_dump_filename := "" # sleep(60.0) # f = !stop_dump_f # f () From 24ec6402792b7d3268e24fbe338152c17b63ca51 Mon Sep 17 00:00:00 2001 From: Tony Miller Date: Tue, 6 Oct 2020 12:19:59 +0900 Subject: [PATCH 3/6] remove some comments for readability --- liquidsoap/radio.liq | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/liquidsoap/radio.liq b/liquidsoap/radio.liq index c9879ab..1e1c1e6 100755 --- a/liquidsoap/radio.liq +++ b/liquidsoap/radio.liq @@ -150,10 +150,6 @@ def on_connect(headers) = if (!last_dj_disconnected_at == 0.0) then log("*****************************************CREATING NEW DUMP, last_dj_disconnected_at is null***************************************************") next_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" - if !current_dump_filename == "" then - log("assigning current_dump_filename") - current_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" - end log("sending live notification") ret = get_process_lines("./live_notification.sh 'LIVE - #{!current_dj}'") ret = list.hd(default="",ret) @@ -161,10 +157,6 @@ def on_connect(headers) = elsif (((!current_dj_connected_at - !last_dj_disconnected_at) > 60.0) or (!current_dj != !last_dj_disconnected)) then log("*****************************************CREATING NEW DUMP***************************************************") next_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" - if !current_dump_filename == "" then - log("assigning current_dump_filename") - current_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" - end log("sending live notification") ret = get_process_lines("./live_notification.sh 'LIVE - #{!current_dj}'") ret = list.hd(default="",ret) @@ -172,20 +164,12 @@ def on_connect(headers) = else log("*****************************************APPENDING TO PREVIOUS DUMP***************************************************") # else append to the old file (dont change the current_dump_filename) - if !current_dump_filename == "" then - log("assigning current_dump_filename and next_dump_filename") - current_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" - next_dump_filename := "#{!current_dj}-#{localtime(!current_dj_connected_at, format_time)}" - end end log("current_dump_filename: #{!current_dump_filename}") log("next_dump_filename: #{!next_dump_filename}") - # s = output.file(%mp3, "/home/liquidsoap/recordings/#{radio_name}-#{!current_dump_filename}.mp3", !live_dj, fallible=true, append=true, reopen_when=reopen_when) - # stop_dump_f := fun () -> source.shutdown(s) end def reopen_when() = - # what do i assign to next_file ??? log("in reopen_when") if !current_dump_filename != !next_dump_filename then log("current_dump_filename != next_dump_filename !! reassigning current to next...") @@ -204,9 +188,6 @@ def on_disconnect() = last_dj_disconnected := !current_dj current_dj := "" next_dump_filename := "" - # sleep(60.0) - # f = !stop_dump_f - # f () end if crossfade_enabled == "true" then @@ -258,7 +239,7 @@ source = on_track(pub_metadata, source) source = server.insert_metadata(id="fallback", source) -output.file(%mp3, "/home/liquidsoap/recordings/#{radio_name}-#{!current_dump_filename}.mp3", !live_dj, fallible=true, append=true, reopen_when=reopen_when) +output.file(%mp3, "/home/liquidsoap/recordings/#{radio_name}-#{!current_dump_filename}.mp3", !live_dj, fallible=true, reopen_when=reopen_when, reopen_delay=0.0) clock.assign_new(id="vorbis_icecast", [output.icecast(%vorbis,id="icecast", mount="#{radio_name}.ogg", From eef8ca94de33c7370aa80ce467c93d4952a7f204 Mon Sep 17 00:00:00 2001 From: Tony Miller Date: Tue, 6 Oct 2020 13:19:25 +0900 Subject: [PATCH 4/6] use append=true --- liquidsoap/radio.liq | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/liquidsoap/radio.liq b/liquidsoap/radio.liq index 1e1c1e6..53105bf 100755 --- a/liquidsoap/radio.liq +++ b/liquidsoap/radio.liq @@ -174,6 +174,7 @@ def reopen_when() = if !current_dump_filename != !next_dump_filename then log("current_dump_filename != next_dump_filename !! reassigning current to next...") current_dump_filename := !next_dump_filename + log("current_dump_filename was assigned: #{!current_dump_filename}") true else false @@ -239,7 +240,7 @@ source = on_track(pub_metadata, source) source = server.insert_metadata(id="fallback", source) -output.file(%mp3, "/home/liquidsoap/recordings/#{radio_name}-#{!current_dump_filename}.mp3", !live_dj, fallible=true, reopen_when=reopen_when, reopen_delay=0.0) +output.file(%mp3, "/home/liquidsoap/recordings/#{radio_name}-#{!current_dump_filename}.mp3", !live_dj, fallible=true, reopen_when=reopen_when, reopen_delay=0.0, append=true) clock.assign_new(id="vorbis_icecast", [output.icecast(%vorbis,id="icecast", mount="#{radio_name}.ogg", From d9835aa50fcc13cf9b8ef9d4f55d8c128acbca6a Mon Sep 17 00:00:00 2001 From: Tony Miller Date: Wed, 7 Oct 2020 21:40:49 +0900 Subject: [PATCH 5/6] make getter function for current dump filename --- liquidsoap/radio.liq | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/liquidsoap/radio.liq b/liquidsoap/radio.liq index 53105bf..c54e921 100755 --- a/liquidsoap/radio.liq +++ b/liquidsoap/radio.liq @@ -170,7 +170,6 @@ def on_connect(headers) = end def reopen_when() = - log("in reopen_when") if !current_dump_filename != !next_dump_filename then log("current_dump_filename != next_dump_filename !! reassigning current to next...") current_dump_filename := !next_dump_filename @@ -240,7 +239,12 @@ source = on_track(pub_metadata, source) source = server.insert_metadata(id="fallback", source) -output.file(%mp3, "/home/liquidsoap/recordings/#{radio_name}-#{!current_dump_filename}.mp3", !live_dj, fallible=true, reopen_when=reopen_when, reopen_delay=0.0, append=true) +def current_dump_filename_getter() = + log("in current_dump_filename_getter: #{!current_dump_filename}") + "/home/liquidsoap/recordings/#{radio_name}-#{!current_dump_filename}.mp3" +end + +output.file(%mp3, current_dump_filename_getter, !live_dj, fallible=true, reopen_when=reopen_when, reopen_delay=0.0, append=true) clock.assign_new(id="vorbis_icecast", [output.icecast(%vorbis,id="icecast", mount="#{radio_name}.ogg", From b49e5ad14c43925eafe983c8e7f040e4316e7fe4 Mon Sep 17 00:00:00 2001 From: Tony Miller Date: Wed, 7 Oct 2020 16:33:34 +0900 Subject: [PATCH 6/6] remove comments --- liquidsoap/radio.liq | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/liquidsoap/radio.liq b/liquidsoap/radio.liq index c54e921..afed9ee 100755 --- a/liquidsoap/radio.liq +++ b/liquidsoap/radio.liq @@ -7,9 +7,9 @@ set("log.file.path","/var/log/liquidsoap.log") set("log.stdout",true) set("log.level",4) -# set("server.telnet",true) -# set("server.socket",true) -# set("server.socket.path","/home/liquidsoap/tracks/liquidsoap.sock") +set("server.telnet",true) +set("server.socket",true) +set("server.socket.path","/home/liquidsoap/tracks/liquidsoap.sock") set("harbor.bind_addrs",["0.0.0.0"])