#!/usr/bin/env liquidsoap # # 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/>. %include "base_config.liq" %include "../src/functions.liq" # Test insert metadata on stream url = "https://securestream.o94.at/live.mp3" in_stream = input.http(id="in_stream", start=true, url) in_stream = insert_metadata(id="in_stream", in_stream) def on_metadata_notification(metadata) = print("Metadata Notification: \n#{metadata}") end # Save the callback last_metadata = in_stream.last_metadata imcb = in_stream.insert_metadata # Handle event and stream output in_stream = source.on_metadata(id="in_stream", in_stream, on_metadata_notification) output.alsa(id="lineout", device="default", mksafe(in_stream)) # Test Case 1: Normal insert and merge # Provide new metadata every 3 seconds def case1() = print("Running Test Case 1 ...") meta = [("foo", "bar")] do_meta_insert(last_metadata, imcb, meta) end thread.run(delay=2., { case1() }) thread.run(delay=4., { case1() }) thread.run(delay=8., { case1() }) # Test Case 2: Insert metadata with new show # Provide new metadata after 23 seconds def case2() = print("Running Test Case 2 ...") meta = [("show_id", "333"), ("FooBar", "2000")] do_meta_insert(last_metadata, imcb, meta) end thread.run(delay=13., { case2() }) thread.run(delay=16., { case1() }) # Test Case 3: Insert metadata with new show # Provide new show metadata after 42 seconds def case3() = print("Running Test Case 3 ...") meta = [("show_id", "42"), ("Something", "...completely different")] do_meta_insert(last_metadata, imcb, meta) end thread.run(delay=23., { case3() }) thread.run(delay=42., { case1() })