Skip to content
Snippets Groups Projects
events.liq 2.71 KiB
Newer Older
  • Learn to ignore specific revisions
  • #
    # 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)
    
        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