Skip to content

Commit 2199643

Browse files
authored
combine consecutive audio messages for migrated stations (#987)
1 parent 4b38077 commit 2199643

File tree

3 files changed

+56
-45
lines changed

3 files changed

+56
-45
lines changed

lib/pa_ess/updater.ex

Lines changed: 54 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -72,47 +72,60 @@ defmodule PaEss.Updater do
7272
priority,
7373
log_metas
7474
) do
75-
tags = Enum.map(audios, fn _ -> create_tag() end)
7675
scu_migrated? = RealtimeSigns.config_engine().scu_migrated?(scu_id)
77-
78-
log_metas =
79-
Enum.zip([tts_audios, tags, log_metas])
80-
|> Enum.map(fn {{tts_audio, pages}, tag, log_meta} ->
81-
case tts_audio do
82-
{:url, url} ->
83-
[audio_url: inspect(url)]
84-
85-
{:spanish, text} ->
86-
[audio: inspect(text)]
87-
88-
list when is_list(list) ->
89-
[audio: Enum.join(list, " ") |> inspect()]
90-
91-
text ->
92-
[audio: inspect(text)]
93-
end ++
94-
[
95-
sign_id: id,
96-
tag: inspect(tag),
97-
legacy: !scu_migrated?,
98-
visual: format_pages(pages) |> Jason.encode!()
99-
] ++
100-
log_meta
101-
end)
76+
tts_audios = Enum.map(tts_audios, fn {audio, pages} -> {List.wrap(audio), pages} end)
77+
78+
log_data = fn {audio, pages} ->
79+
tag = create_tag()
80+
81+
{[
82+
audio:
83+
Enum.map_join(audio, " ", fn
84+
{:url, url} -> "[#{url}]"
85+
{:spanish, text} -> text
86+
text -> text
87+
end)
88+
|> inspect(),
89+
sign_id: id,
90+
tag: inspect(tag),
91+
legacy: !scu_migrated?,
92+
visual: format_pages(pages) |> Jason.encode!()
93+
], tag}
94+
end
10295

10396
if scu_migrated? do
10497
Task.Supervisor.start_child(PaEss.TaskSupervisor, fn ->
98+
tts_items =
99+
Enum.zip(tts_audios, log_metas)
100+
|> Enum.chunk_while(
101+
nil,
102+
fn
103+
value, nil ->
104+
{:cont, value}
105+
106+
{{audio, nil}, log_meta}, {{acc_audio, nil}, acc_log_meta} ->
107+
{:cont, {{acc_audio ++ audio, nil}, Keyword.merge(acc_log_meta, log_meta)}}
108+
109+
value, acc ->
110+
{:cont, acc, value}
111+
end,
112+
fn
113+
nil -> {:cont, nil}
114+
acc -> {:cont, acc, nil}
115+
end
116+
)
117+
105118
async_map = fn list, fun ->
106119
Task.async_stream(list, fun) |> Enum.map(fn {:ok, value} -> value end)
107120
end
108121

109-
file_lists =
110-
async_map.(tts_audios, fn {tts_audio, _} ->
111-
List.wrap(tts_audio) |> async_map.(&fetch_audio_file/1)
112-
end)
122+
async_map.(tts_items, fn {{audio, _pages}, _log_meta} ->
123+
async_map.(audio, &fetch_audio_file/1)
124+
end)
125+
|> Enum.zip(tts_items)
126+
|> Enum.each(fn {file_list, {{_audio, pages} = tts_audio, log_meta}} ->
127+
{logs, tag} = log_data.(tts_audio)
113128

114-
Enum.zip([file_lists, tts_audios, tags, log_metas])
115-
|> Enum.each(fn {file_list, {_, pages}, tag, log_meta} ->
116129
PaEss.ScuQueue.enqueue_message(
117130
scu_id,
118131
{:message, scu_id,
@@ -123,12 +136,19 @@ defmodule PaEss.Updater do
123136
expiration: 30,
124137
priority: priority,
125138
tag: tag
126-
}, log_meta}
139+
}, Keyword.merge(logs, log_meta)}
127140
)
128141
end)
129142
end)
130143
else
131-
MessageQueue.send_audio({pa_ess_loc, audio_zones}, audios, 5, 60, log_metas)
144+
log_list =
145+
Enum.zip(tts_audios, log_metas)
146+
|> Enum.map(fn {tts_audio, log_meta} ->
147+
{logs, _tag} = log_data.(tts_audio)
148+
Keyword.merge(logs, log_meta)
149+
end)
150+
151+
MessageQueue.send_audio({pa_ess_loc, audio_zones}, audios, 5, 60, log_list)
132152
end
133153
end
134154

lib/signs/bus.ex

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1187,13 +1187,7 @@ defmodule Signs.Bus do
11871187
%{audio_zones: audio_zones} = state
11881188

11891189
if audios != [] && audio_zones != [] do
1190-
RealtimeSigns.sign_updater().play_message(
1191-
state,
1192-
audios,
1193-
tts_audios,
1194-
2,
1195-
Enum.map(audios, fn _ -> [message_type: "Bus"] end)
1196-
)
1190+
RealtimeSigns.sign_updater().play_message(state, audios, tts_audios, 2, [])
11971191
end
11981192
end
11991193

lib/signs/utilities/audio.ex

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,10 +197,7 @@ defmodule Signs.Utilities.Audio do
197197
[%PaMessages.PaMessage{priority: priority}] -> priority
198198
_ -> 2
199199
end,
200-
Enum.map(audios, fn audio ->
201-
[message_type: Module.split(audio.__struct__) |> List.last()] ++
202-
Content.Audio.to_logs(audio)
203-
end)
200+
Enum.map(audios, &Content.Audio.to_logs(&1))
204201
)
205202
end
206203

0 commit comments

Comments
 (0)