From f5a83dbabbfc55ccc8fb733b39b17678d659935a Mon Sep 17 00:00:00 2001 From: jo Date: Wed, 17 Aug 2022 15:09:57 +0200 Subject: [PATCH] feat(playout): allow updating message_offline value --- legacy/application/models/Preference.php | 5 +++++ playout/libretime_playout/liquidsoap/1.1/ls_script.liq | 10 ++++++---- playout/libretime_playout/liquidsoap/1.3/ls_script.liq | 10 ++++++---- playout/libretime_playout/liquidsoap/1.4/ls_script.liq | 10 ++++++---- playout/libretime_playout/liquidsoap/client/_client.py | 3 +++ playout/libretime_playout/liquidsoap/entrypoint.liq.j2 | 2 +- playout/libretime_playout/message_handler.py | 3 +++ playout/libretime_playout/player/fetch.py | 10 ++++++++++ playout/tests/fixtures/entrypoint-1.1.liq | 2 +- playout/tests/fixtures/entrypoint-1.4.liq | 2 +- 10 files changed, 42 insertions(+), 15 deletions(-) diff --git a/legacy/application/models/Preference.php b/legacy/application/models/Preference.php index 2fcf9fb43..7ca68007c 100644 --- a/legacy/application/models/Preference.php +++ b/legacy/application/models/Preference.php @@ -358,6 +358,11 @@ class Application_Model_Preference public static function setOffAirMeta($offAirMeta) { self::setValue('off_air_meta', $offAirMeta); + + Application_Model_RabbitMq::SendMessageToPypo( + 'update_message_offline', + ['message_offline' => $offAirMeta] + ); } public static function GetStationName() diff --git a/playout/libretime_playout/liquidsoap/1.1/ls_script.liq b/playout/libretime_playout/liquidsoap/1.1/ls_script.liq index 7d3bd496e..8907e9025 100644 --- a/playout/libretime_playout/liquidsoap/1.1/ls_script.liq +++ b/playout/libretime_playout/liquidsoap/1.1/ls_script.liq @@ -106,6 +106,9 @@ server.register(namespace="vars", server.register(namespace="vars", "station_name", fun (s) -> begin log("vars.station_name") station_name := s s end) +server.register(namespace="vars", + "off_air_meta", + fun (s) -> begin log("vars.off_air_meta") off_air_meta := s s end) server.register(namespace="vars", "bootup_time", fun (s) -> begin log("vars.bootup_time") time := s s end) @@ -159,11 +162,10 @@ server.register(namespace="dynamic_source", # fun (s) -> begin log("dynamic_source.read_stop") destroy_dynamic_source_all() end) default = amplify(id="silence_src", 0.00001, noise()) -ref_off_air_meta = ref off_air_meta -if !ref_off_air_meta == "" then - ref_off_air_meta := "LibreTime - offline" +if !off_air_meta == "" then + off_air_meta := "LibreTime - offline" end -default = rewrite_metadata([("title", !ref_off_air_meta)], default) +default = rewrite_metadata([("title", !off_air_meta)], default) ignore(output.dummy(default, fallible=true)) master_dj_enabled = ref false diff --git a/playout/libretime_playout/liquidsoap/1.3/ls_script.liq b/playout/libretime_playout/liquidsoap/1.3/ls_script.liq index 163d17462..b0457baef 100644 --- a/playout/libretime_playout/liquidsoap/1.3/ls_script.liq +++ b/playout/libretime_playout/liquidsoap/1.3/ls_script.liq @@ -106,6 +106,9 @@ server.register(namespace="vars", server.register(namespace="vars", "station_name", fun (s) -> begin log("vars.station_name") station_name := s s end) +server.register(namespace="vars", + "off_air_meta", + fun (s) -> begin log("vars.off_air_meta") off_air_meta := s s end) server.register(namespace="vars", "bootup_time", fun (s) -> begin log("vars.bootup_time") time := s s end) @@ -159,11 +162,10 @@ server.register(namespace="dynamic_source", # fun (s) -> begin log("dynamic_source.read_stop") destroy_dynamic_source_all() end) default = amplify(id="silence_src", 0.00001, noise()) -ref_off_air_meta = ref off_air_meta -if !ref_off_air_meta == "" then - ref_off_air_meta := "LibreTime - offline" +if !off_air_meta == "" then + off_air_meta := "LibreTime - offline" end -default = rewrite_metadata([("title", !ref_off_air_meta)], default) +default = rewrite_metadata([("title", !off_air_meta)], default) ignore(output.dummy(default, fallible=true)) master_dj_enabled = ref false diff --git a/playout/libretime_playout/liquidsoap/1.4/ls_script.liq b/playout/libretime_playout/liquidsoap/1.4/ls_script.liq index ebfd3ac5d..c949ef7f7 100644 --- a/playout/libretime_playout/liquidsoap/1.4/ls_script.liq +++ b/playout/libretime_playout/liquidsoap/1.4/ls_script.liq @@ -106,6 +106,9 @@ server.register(namespace="vars", server.register(namespace="vars", "station_name", fun (s) -> begin log("vars.station_name") station_name := s s end) +server.register(namespace="vars", + "off_air_meta", + fun (s) -> begin log("vars.off_air_meta") off_air_meta := s s end) server.register(namespace="vars", "bootup_time", fun (s) -> begin log("vars.bootup_time") time := s s end) @@ -159,12 +162,11 @@ server.register(namespace="dynamic_source", # fun (s) -> begin log("dynamic_source.read_stop") destroy_dynamic_source_all() end) default = amplify(id="silence_src", 0.00001, noise()) -ref_off_air_meta = ref off_air_meta -if !ref_off_air_meta == "" then - ref_off_air_meta := "LibreTime - offline" +if !off_air_meta == "" then + off_air_meta := "LibreTime - offline" end def map_off_air_meta(m) = - [("title", !ref_off_air_meta)] + [("title", !off_air_meta)] end default = map_metadata(map_off_air_meta, default) ignore(output.dummy(default, fallible=true)) diff --git a/playout/libretime_playout/liquidsoap/client/_client.py b/playout/libretime_playout/liquidsoap/client/_client.py index d24fd0af2..5eb8ee72d 100644 --- a/playout/libretime_playout/liquidsoap/client/_client.py +++ b/playout/libretime_playout/liquidsoap/client/_client.py @@ -120,6 +120,7 @@ class LiquidsoapClient: *, station_name: Optional[str] = None, message_format: Optional[int] = None, + message_offline: Optional[str] = None, input_fade_transition: Optional[float] = None, ): with self.conn: @@ -127,6 +128,8 @@ class LiquidsoapClient: self._set_var("station_name", station_name) if message_format is not None: self._set_var("stream_metadata_type", message_format) + if message_offline is not None: + self._set_var("off_air_meta", message_offline) if input_fade_transition is not None: self._set_var("default_dj_fade", input_fade_transition) diff --git a/playout/libretime_playout/liquidsoap/entrypoint.liq.j2 b/playout/libretime_playout/liquidsoap/entrypoint.liq.j2 index d6a84de96..26c193369 100644 --- a/playout/libretime_playout/liquidsoap/entrypoint.liq.j2 +++ b/playout/libretime_playout/liquidsoap/entrypoint.liq.j2 @@ -54,7 +54,7 @@ set("harbor.bind_addr", "0.0.0.0") station_name = ref "{{ info.station_name }}" -off_air_meta = "{{ preferences.message_offline }}" +off_air_meta = ref "{{ preferences.message_offline }}" stream_metadata_type = ref {{ preferences.message_format.value }} default_dj_fade = ref {{ preferences.input_fade_transition }} diff --git a/playout/libretime_playout/message_handler.py b/playout/libretime_playout/message_handler.py index a80dd7f2b..c8a4fea19 100644 --- a/playout/libretime_playout/message_handler.py +++ b/playout/libretime_playout/message_handler.py @@ -86,6 +86,9 @@ class PypoMessageHandler(Thread): elif command == "update_stream_format": logger.info("Updating stream format...") self.pypo_queue.put(message) + elif command == "update_message_offline": + logger.info("Updating message offline...") + self.pypo_queue.put(message) elif command == "update_station_name": logger.info("Updating station name...") self.pypo_queue.put(message) diff --git a/playout/libretime_playout/player/fetch.py b/playout/libretime_playout/player/fetch.py index c532fb5a8..cee80da56 100644 --- a/playout/libretime_playout/player/fetch.py +++ b/playout/libretime_playout/player/fetch.py @@ -92,6 +92,9 @@ class PypoFetch(Thread): elif command == "update_stream_format": logger.info("Updating stream format...") self.update_liquidsoap_stream_format(m["stream_format"]) + elif command == "update_message_offline": + logger.info("Updating message offline...") + self.update_liquidsoap_message_offline(m["message_offline"]) elif command == "update_station_name": logger.info("Updating station name...") self.update_liquidsoap_station_name(m["station_name"]) @@ -207,6 +210,13 @@ class PypoFetch(Thread): except (ConnectionError, TimeoutError) as exception: logger.exception(exception) + @ls_timeout + def update_liquidsoap_message_offline(self, message_offline: str): + try: + self.liq_client.settings_update(message_offline=message_offline) + except (ConnectionError, TimeoutError) as exception: + logger.exception(exception) + @ls_timeout def update_liquidsoap_transition_fade(self, fade): try: diff --git a/playout/tests/fixtures/entrypoint-1.1.liq b/playout/tests/fixtures/entrypoint-1.1.liq index 848d31350..8fcbeb8f8 100644 --- a/playout/tests/fixtures/entrypoint-1.1.liq +++ b/playout/tests/fixtures/entrypoint-1.1.liq @@ -98,7 +98,7 @@ set("harbor.bind_addr", "0.0.0.0") station_name = ref "LibreTime" -off_air_meta = "LibreTime - offline" +off_air_meta = ref "LibreTime - offline" stream_metadata_type = ref 0 default_dj_fade = ref 0.0 diff --git a/playout/tests/fixtures/entrypoint-1.4.liq b/playout/tests/fixtures/entrypoint-1.4.liq index 7060ecef9..fb9d81a58 100644 --- a/playout/tests/fixtures/entrypoint-1.4.liq +++ b/playout/tests/fixtures/entrypoint-1.4.liq @@ -98,7 +98,7 @@ set("harbor.bind_addrs", ["0.0.0.0"]) station_name = ref "LibreTime" -off_air_meta = "LibreTime - offline" +off_air_meta = ref "LibreTime - offline" stream_metadata_type = ref 0 default_dj_fade = ref 0.0