Skip to content

Commit

Permalink
Support add/next/play/replace enqueue options in Sonos (home-assistan…
Browse files Browse the repository at this point in the history
  • Loading branch information
jjlawren authored Jun 1, 2022
1 parent 44f332e commit 275ea5b
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions homeassistant/components/sonos/media_player.py
Original file line number Diff line number Diff line change
Expand Up @@ -576,6 +576,14 @@ def play_media(self, media_type: str, media_id: str, **kwargs: Any) -> None:
self.set_shuffle(True)
if kwargs.get(ATTR_MEDIA_ENQUEUE) == MediaPlayerEnqueue.ADD:
plex_plugin.add_to_queue(result.media)
elif kwargs.get(ATTR_MEDIA_ENQUEUE) in (
MediaPlayerEnqueue.NEXT,
MediaPlayerEnqueue.PLAY,
):
pos = (self.media.queue_position or 0) + 1
new_pos = plex_plugin.add_to_queue(result.media, position=pos)
if kwargs.get(ATTR_MEDIA_ENQUEUE) == MediaPlayerEnqueue.PLAY:
soco.play_from_queue(new_pos - 1)
else:
soco.clear_queue()
plex_plugin.add_to_queue(result.media)
Expand All @@ -586,6 +594,14 @@ def play_media(self, media_type: str, media_id: str, **kwargs: Any) -> None:
if share_link.is_share_link(media_id):
if kwargs.get(ATTR_MEDIA_ENQUEUE) == MediaPlayerEnqueue.ADD:
share_link.add_share_link_to_queue(media_id)
elif kwargs.get(ATTR_MEDIA_ENQUEUE) in (
MediaPlayerEnqueue.NEXT,
MediaPlayerEnqueue.PLAY,
):
pos = (self.media.queue_position or 0) + 1
new_pos = share_link.add_share_link_to_queue(media_id, position=pos)
if kwargs.get(ATTR_MEDIA_ENQUEUE) == MediaPlayerEnqueue.PLAY:
soco.play_from_queue(new_pos - 1)
else:
soco.clear_queue()
share_link.add_share_link_to_queue(media_id)
Expand All @@ -596,6 +612,14 @@ def play_media(self, media_type: str, media_id: str, **kwargs: Any) -> None:

if kwargs.get(ATTR_MEDIA_ENQUEUE) == MediaPlayerEnqueue.ADD:
soco.add_uri_to_queue(media_id)
elif kwargs.get(ATTR_MEDIA_ENQUEUE) in (
MediaPlayerEnqueue.NEXT,
MediaPlayerEnqueue.PLAY,
):
pos = (self.media.queue_position or 0) + 1
new_pos = soco.add_uri_to_queue(media_id, position=pos)
if kwargs.get(ATTR_MEDIA_ENQUEUE) == MediaPlayerEnqueue.PLAY:
soco.play_from_queue(new_pos - 1)
else:
soco.play_uri(media_id, force_radio=is_radio)
elif media_type == MEDIA_TYPE_PLAYLIST:
Expand Down

0 comments on commit 275ea5b

Please sign in to comment.