# # Aura Engine (https://gitlab.servus.at/aura/engine) # # Copyright (C) 2017-now() - The Aura Engine Team. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # Called when some new metadata info is available def on_metadata_notification(meta) = # FIXME For some reason stream channels do not pass the `source` property in meta channel_name = meta["source"] source_type = eval_source_type(channel_name) log( level=5, label="metadata", "Raw metadata before POST:\n\n #{meta}\n\n" ) show_name = ref(list.assoc(default="", "show_name", meta)) show_id = ref(list.assoc(default="", "show_id", meta)) timeslot_id = list.assoc(default="-1", "timeslot_id", meta) playlist_id = list.assoc(default="-1", "playlist_id", meta) playlist_track_num = list.assoc(default="", "playlist_item", meta) track_start = list.assoc(default=meta["track_start"], "on_air", meta) track_duration = get_meta_track_duration(meta) track_type = eval_track_type(meta["track_type"], meta["source"]) track_artist = list.assoc(default=meta["track_artist"], "artist", meta) track_album = list.assoc(default=meta["track_album"], "album", meta) track_title = list.assoc(default=meta["track_title"], "title", meta) if source_type == "fallback" then log( level=3, label="metadata", "Detected FALLBACK channel `#{channel_name}` playing (Show ID: #{fallback_show_id()})" ) show_name := fallback_show_name() show_id := fallback_show_id() end playlog = [ ("show_id", show_id()), ("show_name", show_name()), ("timeslot_id", timeslot_id), ("playlist_id", playlist_id), ("track_type", track_type), ("track_start", track_start), ("track_duration", "#{track_duration}"), ("track_title", track_title), ("track_album", track_album), ("track_artist", track_artist), ("track_num", playlist_track_num), ("log_source", engine_id) ] if playlog["show_id"] == "" then log( level=3, label="metadata", "Skip posting playlog because of missing show ID!" ) else post_playlog(engine_api_playlog, playlog) end end