From: Marcel van der Veldt Date: Sat, 22 Feb 2025 12:11:41 +0000 (+0100) Subject: Fix: PluginSource playback to group player X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=c6b2cb04414e192ba22c9ad00fcbcbc412a55cb8;p=music-assistant-server.git Fix: PluginSource playback to group player --- diff --git a/music_assistant/controllers/players.py b/music_assistant/controllers/players.py index b339732f..658a81f9 100644 --- a/music_assistant/controllers/players.py +++ b/music_assistant/controllers/players.py @@ -1643,9 +1643,10 @@ class PlayerController(CoreController): uri=stream_url, media_type=MediaType.PLUGIN_SOURCE, title=plugin_source.name, - queue_id=plugin_source.id, custom_data={ - "provider": plugin_source.id, + "provider": plugin_prov.instance_id, + "source_id": plugin_source.id, + "player_id": player.player_id, "audio_format": plugin_source.audio_format, }, ), diff --git a/music_assistant/providers/airplay/provider.py b/music_assistant/providers/airplay/provider.py index b336578d..02fd9906 100644 --- a/music_assistant/providers/airplay/provider.py +++ b/music_assistant/providers/airplay/provider.py @@ -322,9 +322,11 @@ class AirplayProvider(PlayerProvider): input_format = AIRPLAY_PCM_FORMAT assert media.custom_data audio_source = self.mass.streams.get_plugin_source_stream( - plugin_source_id=media.custom_data["provider"], + plugin_source_id=media.custom_data["source_id"], output_format=AIRPLAY_PCM_FORMAT, - player_id=player_id, + # need to pass player_id from the PlayerMedia object + # because this could have been a group + player_id=media.custom_data["player_id"], ) elif media.queue_id and media.queue_id.startswith("ugp_"): # special case: UGP stream diff --git a/music_assistant/providers/player_group/__init__.py b/music_assistant/providers/player_group/__init__.py index 48f56cd7..bc2ecb52 100644 --- a/music_assistant/providers/player_group/__init__.py +++ b/music_assistant/providers/player_group/__init__.py @@ -486,9 +486,9 @@ class PlayerGroupProvider(PlayerProvider): elif media.media_type == MediaType.PLUGIN_SOURCE: # special case: plugin source stream audio_source = self.mass.streams.get_plugin_source_stream( - plugin_source_id=media.custom_data["provider"], + plugin_source_id=media.custom_data["source_id"], output_format=UGP_FORMAT, - player_id=player_id, + player_id=media.custom_data["player_id"], ) elif media.media_type == MediaType.RADIO: # use single item stream request for radio streams diff --git a/music_assistant/providers/slimproto/__init__.py b/music_assistant/providers/slimproto/__init__.py index 3b993c6d..3818bc01 100644 --- a/music_assistant/providers/slimproto/__init__.py +++ b/music_assistant/providers/slimproto/__init__.py @@ -381,9 +381,11 @@ class SlimprotoProvider(PlayerProvider): elif media.media_type == MediaType.PLUGIN_SOURCE: # special case: plugin source stream audio_source = self.mass.streams.get_plugin_source_stream( - plugin_source_id=media.custom_data["provider"], + plugin_source_id=media.custom_data["source_id"], output_format=master_audio_format, - player_id=player_id, + # need to pass player_id from the PlayerMedia object + # because this could have been a group + player_id=media.custom_data["player_id"], ) elif media.queue_id.startswith("ugp_"): # special case: UGP stream