Fix: PluginSource playback to group player
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 22 Feb 2025 12:11:41 +0000 (13:11 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 22 Feb 2025 12:11:41 +0000 (13:11 +0100)
music_assistant/controllers/players.py
music_assistant/providers/airplay/provider.py
music_assistant/providers/player_group/__init__.py
music_assistant/providers/slimproto/__init__.py

index b339732f887692b2c053ef98caa91300c5805294..658a81f9452f3baf8d676add08f93e4c4cca8310 100644 (file)
@@ -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,
                 },
             ),
index b336578d6d224802dd990106f3d813feb6e57135..02fd990668cd40b9af14a80e326815b7777116bb 100644 (file)
@@ -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
index 48f56cd76ca3e6a43acd424f924939cc7cb68346..bc2ecb52406e4cce4fe311188517df011406cdbe 100644 (file)
@@ -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
index 3b993c6d430733df0b118c48f0c8fc3d858f90b1..3818bc011f4832145893fbbd4bf57bc1b2a7e7bf 100644 (file)
@@ -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