@@ -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
0 commit comments