mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Fix Sonos media position with radio sources (#51137)
This commit is contained in:
parent
8d365e8bf5
commit
f0952d3ee8
@ -844,7 +844,8 @@ class SonosSpeaker:
|
|||||||
if music_source == MUSIC_SRC_RADIO:
|
if music_source == MUSIC_SRC_RADIO:
|
||||||
self.update_media_radio(variables)
|
self.update_media_radio(variables)
|
||||||
else:
|
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()
|
self.write_entity_states()
|
||||||
|
|
||||||
@ -907,11 +908,25 @@ class SonosSpeaker:
|
|||||||
if fav.reference.get_uri() == media_info["uri"]:
|
if fav.reference.get_uri() == media_info["uri"]:
|
||||||
self.media.source_name = fav.title
|
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."""
|
"""Update state when playing music tracks."""
|
||||||
self.media.duration = _timespan_secs(track_info.get("duration"))
|
self.media.duration = _timespan_secs(track_info.get("duration"))
|
||||||
current_position = _timespan_secs(track_info.get("position"))
|
current_position = _timespan_secs(track_info.get("position"))
|
||||||
|
|
||||||
|
if self.media.duration == 0:
|
||||||
|
self.media.clear_position()
|
||||||
|
return
|
||||||
|
|
||||||
# player started reporting position?
|
# player started reporting position?
|
||||||
if current_position is not None and self.media.position is None:
|
if current_position is not None and self.media.position is None:
|
||||||
update_media_position = True
|
update_media_position = True
|
||||||
@ -935,9 +950,3 @@ class SonosSpeaker:
|
|||||||
elif update_media_position:
|
elif update_media_position:
|
||||||
self.media.position = current_position
|
self.media.position = current_position
|
||||||
self.media.position_updated_at = dt_util.utcnow()
|
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
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user