Feat: extend streamtitle to stream metadata
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 12 Jan 2025 19:10:48 +0000 (20:10 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 12 Jan 2025 19:10:48 +0000 (20:10 +0100)
Allow live sources to provide more metadata than just a title

music_assistant/providers/airplay/raop.py
music_assistant/providers/siriusxm/__init__.py
pyproject.toml
requirements_all.txt

index beffcd6e3b3e73da07fd26b94d5e30a2d0ba12be..b717e471fe4b99539536de4f52546cacc3ca4b8b 100644 (file)
@@ -386,13 +386,10 @@ class RaopStream:
         title = queue.current_item.name
         artist = ""
         album = ""
-        if queue.current_item.streamdetails and queue.current_item.streamdetails.stream_title:
-            # stream title from radio station
-            stream_title = queue.current_item.streamdetails.stream_title
-            if " - " in stream_title:
-                artist, title = stream_title.split(" - ", 1)
-            else:
-                title = stream_title
+        if queue.current_item.streamdetails and queue.current_item.streamdetails.stream_metadata:
+            # stream title/metadata from radio/live stream
+            title = queue.current_item.streamdetails.stream_metadata.title or ""
+            artist = queue.current_item.streamdetails.stream_metadata.artist or ""
             # set album to radio station name
             album = queue.current_item.name
         elif media_item := queue.current_item.media_item:
index d5ed26f2589759fe2d2fa4d17788fdf6663ea33a..b8784caaf8c69947c9793f10769dc4b22c44a0f1 100644 (file)
@@ -25,7 +25,7 @@ from music_assistant_models.media_items import (
     ProviderMapping,
     Radio,
 )
-from music_assistant_models.streamdetails import StreamDetails
+from music_assistant_models.streamdetails import LivestreamMetadata, StreamDetails
 from tenacity import RetryError
 
 from music_assistant.helpers.util import select_free_port
@@ -270,9 +270,10 @@ class SiriusXMProvider(MusicProvider):
         if latest_cut_marker:
             latest_cut = latest_cut_marker.cut
             title = latest_cut.title
-            artists = ", ".join([a.name for a in latest_cut.artists])
-
-            self._current_stream_details.stream_title = f"{title} - {artists}"
+            self._current_stream_details.stream_metadata = LivestreamMetadata(
+                title=title,
+                artist=", ".join([a.name for a in latest_cut.artists]),
+            )
 
     async def _refresh_channels(self) -> bool:
         self._channels = await self._client.channels
index 8df8f15437f312fafdae22256b69f1fbe0b6210c..d5fedf3412dc5a161e04e18b852114d928581393 100644 (file)
@@ -25,7 +25,7 @@ dependencies = [
   "mashumaro==3.14",
   "memory-tempfile==2.2.3",
   "music-assistant-frontend==2.10.4",
-  "music-assistant-models==1.1.12",
+  "music-assistant-models==1.1.15",
   "orjson==3.10.12",
   "pillow==11.0.0",
   "podcastparser==0.6.10",
index 0e6f198a5275ea8d6b99f4cd981ab5eb1c180263..01cb437f0f2d1e522a1650ac2234242acd690416 100644 (file)
@@ -25,7 +25,7 @@ ifaddr==0.2.0
 mashumaro==3.14
 memory-tempfile==2.2.3
 music-assistant-frontend==2.10.4
-music-assistant-models==1.1.12
+music-assistant-models==1.1.15
 orjson==3.10.12
 pillow==11.0.0
 pkce==1.0.3