From 2dced3e281f52d7a3acb5e00e3eeaea31542b04a Mon Sep 17 00:00:00 2001 From: Loxbie <ole@freirad.at> Date: Mon, 23 Sep 2024 17:03:52 +0200 Subject: [PATCH] Feat: check for unset metadata --- src/aura_engine/scheduling/api.py | 19 ++++++++++++++++--- tests/json/tank-api-v1-playlists-2.json | 8 ++------ tests/test_scheduling_api_fetcher.py | 8 +++++--- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/aura_engine/scheduling/api.py b/src/aura_engine/scheduling/api.py index 80e87826..1db51688 100644 --- a/src/aura_engine/scheduling/api.py +++ b/src/aura_engine/scheduling/api.py @@ -53,6 +53,7 @@ from aura_steering_api.models.playout_program_entry import ( ) from aura_tank_api.models.playlist import Playlist as API_PLAYLIST from aura_tank_api.models.playlist_entry import PlaylistEntry as API_PLAYLIST_ENTRY +from aura_tank_api.types import Unset ApiResult = NamedTuple( "ApiResult", @@ -248,9 +249,21 @@ class ApiFetcher(threading.Thread): # Files do have a metadata object if entry.file and entry.file.metadata: metadata = PlaylistItem.Metadata( - artist=entry.file.metadata.artist, - album=entry.file.metadata.album, - title=entry.file.metadata.title, + artist=( + "" + if isinstance(entry.file.metadata.artist, Unset) + else entry.file.metadata.artist + ), + album=( + "" + if isinstance(entry.file.metadata.album, Unset) + else entry.file.metadata.album + ), + title=( + "" + if isinstance(entry.file.metadata.title, Unset) + else entry.file.metadata.title + ), ) item = PlaylistItem(entry.uri, entry.duration, 100, metadata) diff --git a/tests/json/tank-api-v1-playlists-2.json b/tests/json/tank-api-v1-playlists-2.json index 64d709db..e89f7a28 100644 --- a/tests/json/tank-api-v1-playlists-2.json +++ b/tests/json/tank-api-v1-playlists-2.json @@ -21,11 +21,7 @@ "state": "done" } }, - "metadata": { - "artist": "Peaches", - "title": "AA XXX", - "album": "The Teaches of Peaches" - }, + "metadata": {}, "size": 36496517, "duration": 199 } @@ -71,4 +67,4 @@ } } ] -} +} \ No newline at end of file diff --git a/tests/test_scheduling_api_fetcher.py b/tests/test_scheduling_api_fetcher.py index 7402339f..41d9ad1b 100644 --- a/tests/test_scheduling_api_fetcher.py +++ b/tests/test_scheduling_api_fetcher.py @@ -255,9 +255,11 @@ class TestSchedulingApiFetcher(unittest.TestCase): self.assertEqual(100, pl_items[0].volume) self.assertEqual("file://musikprogramm/303", pl_items[0].source) self.assertEqual(199, pl_items[0].duration) - self.assertEqual("Peaches", pl_items[0].metadata.artist) - self.assertEqual("The Teaches of Peaches", pl_items[0].metadata.album) - self.assertEqual("AA XXX", pl_items[0].metadata.title) + + # Faulty metadata is set to an empty string + self.assertEqual("", pl_items[0].metadata.artist) + self.assertEqual("", pl_items[0].metadata.album) + self.assertEqual("", pl_items[0].metadata.title) # Playlist Item 2 self.assertEqual(100, pl_items[1].volume) -- GitLab