From 2c492d71f7fe38319b46093bd2c684b6a66c43ff Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 11 May 2021 23:55:10 -0500 Subject: [PATCH] Handle transport errors when updating media via events (#50480) Co-authored-by: Jason Lawrence --- .../components/sonos/media_player.py | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/sonos/media_player.py b/homeassistant/components/sonos/media_player.py index 11f59f2f432..f1780920336 100644 --- a/homeassistant/components/sonos/media_player.py +++ b/homeassistant/components/sonos/media_player.py @@ -498,9 +498,14 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity): if new_status == "TRANSITIONING": return - self._play_mode = ( - variables["current_play_mode"] if variables else self.soco.play_mode - ) + if variables and "transport_state" in variables: + self._play_mode = variables["current_play_mode"] + track_uri = variables["current_track_uri"] + music_source = self.soco.music_source_from_uri(track_uri) + else: + self._play_mode = self.soco.play_mode + music_source = self.soco.music_source + self._uri = None self._media_duration = None self._media_image_url = None @@ -514,13 +519,6 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity): update_position = new_status != self._status self._status = new_status - if variables: - track_uri = variables["current_track_uri"] - music_source = self.soco.music_source_from_uri(track_uri) - else: - # This causes a network round-trip so we avoid it when possible - music_source = self.soco.music_source - if music_source == MUSIC_SRC_TV: self.update_media_linein(SOURCE_TV) elif music_source == MUSIC_SRC_LINE_IN: @@ -556,7 +554,7 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity): self._media_title = source self._source_name = source - def update_media_radio(self, variables: dict) -> None: + def update_media_radio(self, variables: dict | None) -> None: """Update state when streaming radio.""" self._clear_media_position()