Add "enqueue" parameter to spotify integration (#90687)

Co-authored-by: Franck Nijhof <git@frenck.dev>
This commit is contained in:
Emil Ahlbäck 2023-07-23 20:26:07 +02:00 committed by GitHub
parent bfbdebd0f7
commit 7ed66706b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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