Fix: Sonos player does not resume track on pause
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 27 Mar 2025 00:59:04 +0000 (01:59 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 27 Mar 2025 00:59:04 +0000 (01:59 +0100)
music_assistant/providers/sonos/provider.py

index b8e04218a038165e573f4682752fa708e4004ab5..820cd6dc55153912fb56ea865ffaec0639e84ea7 100644 (file)
@@ -219,6 +219,17 @@ class SonosPlayerProvider(PlayerProvider):
     async def cmd_pause(self, player_id: str) -> None:
         """Send PAUSE command to given player."""
         if sonos_player := self.sonos_players[player_id]:
+            active_source = sonos_player.mass_player.active_source
+            if self.mass.player_queues.get(active_source):
+                # Sonos seems to be bugged when playing our queue tracks and we send pause,
+                # it can't resume the current track and simply aborts/skips it
+                # so we stop the player instead.
+                # https://github.com/music-assistant/support/issues/3758
+                # TODO: revisit this later and find out how this can be so bugged
+                # probably some strange DLNA flag or whatever needs to be set.
+                await self.cmd_stop(player_id)
+                return
+
             await sonos_player.cmd_pause()
 
     async def cmd_seek(self, player_id: str, position: int) -> None: