Fix Sonos media position with radio sources (#51137)

pull/51151/head
jjlawren 2021-05-27 03:53:51 -05:00 committed by GitHub
parent 8d365e8bf5
commit f0952d3ee8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 8 deletions

View File

@ -844,7 +844,8 @@ class SonosSpeaker:
if music_source == MUSIC_SRC_RADIO:
self.update_media_radio(variables)
else:
self.update_media_music(update_position, track_info)
self.update_media_music(track_info)
self.update_media_position(update_position, track_info)
self.write_entity_states()
@ -907,11 +908,25 @@ class SonosSpeaker:
if fav.reference.get_uri() == media_info["uri"]:
self.media.source_name = fav.title
def update_media_music(self, update_media_position: bool, track_info: dict) -> None:
def update_media_music(self, track_info: dict) -> None:
"""Update state when playing music tracks."""
self.media.image_url = track_info.get("album_art")
playlist_position = int(track_info.get("playlist_position")) # type: ignore
if playlist_position > 0:
self.media.queue_position = playlist_position - 1
def update_media_position(
self, update_media_position: bool, track_info: dict
) -> None:
"""Update state when playing music tracks."""
self.media.duration = _timespan_secs(track_info.get("duration"))
current_position = _timespan_secs(track_info.get("position"))
if self.media.duration == 0:
self.media.clear_position()
return
# player started reporting position?
if current_position is not None and self.media.position is None:
update_media_position = True
@ -935,9 +950,3 @@ class SonosSpeaker:
elif update_media_position:
self.media.position = current_position
self.media.position_updated_at = dt_util.utcnow()
self.media.image_url = track_info.get("album_art")
playlist_position = int(track_info.get("playlist_position")) # type: ignore
if playlist_position > 0:
self.media.queue_position = playlist_position - 1