From 33c50fef6602a19d3671b045e7666b0d38e4cc0d Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Sun, 12 Jan 2025 20:10:48 +0100 Subject: [PATCH] Feat: extend streamtitle to stream metadata Allow live sources to provide more metadata than just a title --- music_assistant/providers/airplay/raop.py | 11 ++++------- music_assistant/providers/siriusxm/__init__.py | 9 +++++---- pyproject.toml | 2 +- requirements_all.txt | 2 +- 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/music_assistant/providers/airplay/raop.py b/music_assistant/providers/airplay/raop.py index beffcd6e..b717e471 100644 --- a/music_assistant/providers/airplay/raop.py +++ b/music_assistant/providers/airplay/raop.py @@ -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: diff --git a/music_assistant/providers/siriusxm/__init__.py b/music_assistant/providers/siriusxm/__init__.py index d5ed26f2..b8784caa 100644 --- a/music_assistant/providers/siriusxm/__init__.py +++ b/music_assistant/providers/siriusxm/__init__.py @@ -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 diff --git a/pyproject.toml b/pyproject.toml index 8df8f154..d5fedf34 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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", diff --git a/requirements_all.txt b/requirements_all.txt index 0e6f198a..01cb437f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -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 -- 2.34.1