From 719ae32298b037dfd263347eecf13f82f372244d Mon Sep 17 00:00:00 2001 From: David Trattnig <david@subsquare.at> Date: Tue, 12 Jul 2022 12:36:43 +0200 Subject: [PATCH] Feat: Additional meta fields for fallback data --- src/engine.liq | 13 +++++++------ src/functions.liq | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/engine.liq b/src/engine.liq index 43c3e94..c8ce6d2 100644 --- a/src/engine.liq +++ b/src/engine.liq @@ -44,12 +44,12 @@ def on_metadata_notification(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_duration = int_of_float(request.duration(meta["filename"])) - track_type = (eval_track_type(meta["track_type"], meta["source"])) - track_start = meta["on_air"] - track_artist = meta["artist"] - track_album = meta["album"] - track_title = meta["title"] + 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) source_type = eval_source_type(meta["source"]) if source_type == "fallback" then @@ -121,6 +121,7 @@ stripped_stream = blank.strip( ) output_source = attach_fallback_source(stripped_stream) +output_source.on_metadata(on_metadata_notification) ##################################### diff --git a/src/functions.liq b/src/functions.liq index 6696da8..15d8e6d 100644 --- a/src/functions.liq +++ b/src/functions.liq @@ -18,6 +18,22 @@ +# Reads the track duration +# a.) when available from the file +# b.) as a fallback from the meta field "track_duration" +# +# Returns +# (int) duration in seconds +def get_meta_track_duration(meta) = + track_duration = int_of_float(request.duration(meta["filename"])) + if track_duration != -1 then + track_duration + else + int_of_string(meta["track_duration"]) + end +end + + # Posts a playlog to the Engine API def post_playlog(api_url, data) = json_data = json() -- GitLab