Skip to content

Commit bee4013

Browse files
authored
Support adding to queue (#302)
1 parent 8bdc153 commit bee4013

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

src/spotifyaio/spotify.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,13 @@ async def set_shuffle(self, *, state: bool, device_id: str | None = None) -> Non
232232
params["device_id"] = device_id
233233
await self._put("v1/me/player/shuffle", params=params)
234234

235+
async def add_to_queue(self, uri: str, device_id: str | None = None) -> None:
236+
"""Add to queue."""
237+
data: dict[str, str] = {"uri": uri}
238+
if device_id:
239+
data["device_id"] = device_id
240+
await self._post("v1/me/player/queue", data=data)
241+
235242
async def get_playlist(self, playlist_id: str) -> Playlist:
236243
"""Get playlist."""
237244
identifier = playlist_id.split(":")[-1]

tests/test_spotify.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,40 @@ async def test_set_shuffle(
569569
)
570570

571571

572+
@pytest.mark.parametrize(
573+
("arguments", "expected_data"),
574+
[
575+
(
576+
{"uri": "spotify:track:1FyXbzOlq3dkxaB6iRsETv"},
577+
{"uri": "spotify:track:1FyXbzOlq3dkxaB6iRsETv"},
578+
),
579+
(
580+
{"uri": "spotify:track:1FyXbzOlq3dkxaB6iRsETv", "device_id": "123qwe"},
581+
{"uri": "spotify:track:1FyXbzOlq3dkxaB6iRsETv", "device_id": "123qwe"},
582+
),
583+
],
584+
)
585+
async def test_add_to_queue(
586+
responses: aioresponses,
587+
authenticated_client: SpotifyClient,
588+
arguments: dict[str, Any],
589+
expected_data: dict[str, Any],
590+
) -> None:
591+
"""Test adding to queue."""
592+
responses.post(
593+
f"{SPOTIFY_URL}/v1/me/player/queue",
594+
status=204,
595+
)
596+
await authenticated_client.add_to_queue(**arguments)
597+
responses.assert_called_once_with(
598+
f"{SPOTIFY_URL}/v1/me/player/queue",
599+
METH_POST,
600+
headers=HEADERS,
601+
params=None,
602+
data=expected_data,
603+
)
604+
605+
572606
async def test_get_album(
573607
responses: aioresponses,
574608
snapshot: SnapshotAssertion,

0 commit comments

Comments
 (0)