From: Marcel van der Veldt Date: Tue, 24 Feb 2026 18:37:58 +0000 (+0100) Subject: Fix: Resolve stream_url also for enqueue next media X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=12770e5a094fa6c5cc2353da9bd71e78a9860d58;p=music-assistant-server.git Fix: Resolve stream_url also for enqueue next media --- diff --git a/music_assistant/providers/chromecast/player.py b/music_assistant/providers/chromecast/player.py index d71df7ce..e81fc8c3 100644 --- a/music_assistant/providers/chromecast/player.py +++ b/music_assistant/providers/chromecast/player.py @@ -467,6 +467,7 @@ class ChromecastPlayer(Player): """Handle enqueuing of the next item on the player.""" next_item_id = None status = self.cc.media_controller.status + media.uri = await self.provider.mass.streams.resolve_stream_url(self.player_id, media) # lookup position of current track in cast queue cast_current_item_id = getattr(status, "current_item_id", 0) cast_queue_items = getattr(status, "items", []) diff --git a/music_assistant/providers/dlna/player.py b/music_assistant/providers/dlna/player.py index a4c130eb..14854a25 100644 --- a/music_assistant/providers/dlna/player.py +++ b/music_assistant/providers/dlna/player.py @@ -448,8 +448,9 @@ class DLNAPlayer(Player): assert self.device is not None # for type checking didl_metadata = create_didl_metadata(media) title = media.title or media.uri + url = await self.provider.mass.streams.resolve_stream_url(self.player_id, media) try: - await self.device.async_set_next_transport_uri(media.uri, title, didl_metadata) + await self.device.async_set_next_transport_uri(url, title, didl_metadata) except UpnpError: self.logger.error( "Enqueuing the next track failed for player %s - " diff --git a/music_assistant/providers/musiccast/player.py b/music_assistant/providers/musiccast/player.py index 8bb9c576..f8b13b45 100644 --- a/music_assistant/providers/musiccast/player.py +++ b/music_assistant/providers/musiccast/player.py @@ -657,6 +657,7 @@ class MusicCastPlayer(Player): async def enqueue_next_media(self, media: PlayerMedia) -> None: """Enqueue next command.""" + media.uri = await self.provider.mass.streams.resolve_stream_url(self.player_id, media) await avt_set_url( self.mass.http_session, self.physical_device, diff --git a/music_assistant/providers/roku_media_assistant/player.py b/music_assistant/providers/roku_media_assistant/player.py index 55734321..1dcb6c00 100644 --- a/music_assistant/providers/roku_media_assistant/player.py +++ b/music_assistant/providers/roku_media_assistant/player.py @@ -226,6 +226,7 @@ class MediaAssistantPlayer(Player): async def enqueue_next_media(self, media: PlayerMedia) -> None: """Handle enqueuing of the next (queue) item on the player.""" + stream_url = await self.provider.mass.streams.resolve_stream_url(self.player_id, media) try: device_info = await self.roku.update() @@ -239,7 +240,7 @@ class MediaAssistantPlayer(Player): if app_running: await self.roku_input( { - "u": media.uri, + "u": stream_url, "t": "a", "albumName": media.album, "songName": media.title, diff --git a/music_assistant/providers/sonos_s1/player.py b/music_assistant/providers/sonos_s1/player.py index 51d12dab..c9b4a827 100644 --- a/music_assistant/providers/sonos_s1/player.py +++ b/music_assistant/providers/sonos_s1/player.py @@ -235,15 +235,15 @@ class SonosPlayer(Player): ) raise PlayerCommandFailed(msg) + stream_url = await self.provider.mass.streams.resolve_stream_url(self.player_id, media) if not media.duration: # Sonos really does not like FLAC streams without duration - media.uri = media.uri.replace(".flac", ".mp3") + stream_url = stream_url.replace(".flac", ".mp3") didl_metadata = create_didl_metadata(media) is_announcement = media.media_type == MediaType.ANNOUNCEMENT force_radio = False if is_announcement else not media.duration - stream_url = await self.provider.mass.streams.resolve_stream_url(self.player_id, media) await asyncio.to_thread( self.soco.play_uri, stream_url, meta=didl_metadata, force_radio=force_radio ) @@ -260,12 +260,13 @@ class SonosPlayer(Player): raise PlayerCommandFailed(msg) didl_metadata = create_didl_metadata(media) + stream_url = await self.provider.mass.streams.resolve_stream_url(self.player_id, media) def add_to_queue() -> None: self.soco.avTransport.SetNextAVTransportURI( [ ("InstanceID", 0), - ("NextURI", media.uri), + ("NextURI", stream_url), ("NextURIMetaData", didl_metadata), ] ) diff --git a/music_assistant/providers/squeezelite/player.py b/music_assistant/providers/squeezelite/player.py index eac580e7..98119686 100644 --- a/music_assistant/providers/squeezelite/player.py +++ b/music_assistant/providers/squeezelite/player.py @@ -297,9 +297,10 @@ class SqueezelitePlayer(Player): async def enqueue_next_media(self, media: PlayerMedia) -> None: """Handle enqueuing next media item.""" + stream_url = await self.provider.mass.streams.resolve_stream_url(self.player_id, media) await self._handle_play_url_for_slimplayer( self.client, - url=media.uri, + url=stream_url, media=media, enqueue=True, send_flush=False,