From 7ed66706b9b2e3cf582a2ad9ce35179455123440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Ahlb=C3=A4ck?= Date: Sun, 23 Jul 2023 20:26:07 +0200 Subject: [PATCH] Add "enqueue" parameter to spotify integration (#90687) Co-authored-by: Franck Nijhof --- .../components/spotify/media_player.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/homeassistant/components/spotify/media_player.py b/homeassistant/components/spotify/media_player.py index de48e8fae20..41d27b68672 100644 --- a/homeassistant/components/spotify/media_player.py +++ b/homeassistant/components/spotify/media_player.py @@ -12,7 +12,9 @@ from spotipy import SpotifyException from yarl import URL from homeassistant.components.media_player import ( + ATTR_MEDIA_ENQUEUE, BrowseMedia, + MediaPlayerEnqueue, MediaPlayerEntity, MediaPlayerEntityFeature, MediaPlayerState, @@ -336,6 +338,10 @@ class SpotifyMediaPlayer(MediaPlayerEntity): """Play media.""" media_type = media_type.removeprefix(MEDIA_PLAYER_PREFIX) + enqueue: MediaPlayerEnqueue = kwargs.get( + ATTR_MEDIA_ENQUEUE, MediaPlayerEnqueue.REPLACE + ) + kwargs = {} # Spotify can't handle URI's with query strings or anchors @@ -357,6 +363,17 @@ class SpotifyMediaPlayer(MediaPlayerEntity): ): kwargs["device_id"] = self.data.devices.data[0].get("id") + if enqueue == MediaPlayerEnqueue.ADD: + if media_type not in { + MediaType.TRACK, + MediaType.EPISODE, + MediaType.MUSIC, + }: + raise ValueError( + f"Media type {media_type} is not supported when enqueue is ADD" + ) + return self.data.client.add_to_queue(media_id, kwargs.get("device_id")) + self.data.client.start_playback(**kwargs) @spotify_exception_handler