mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Add tests for the Spotify media browser (#127857)
* Add tests for the Spotify media browser * Add tests for the Spotify media browser * Fix * Fix comment * Revert "Add tests for the Spotify media browser" This reverts commit 59de6725d22b9c8797a187f7e2d598375bd372c4. * Add comment * Add comment
This commit is contained in:
parent
d8d000f279
commit
c096cc23df
@ -73,14 +73,34 @@ def mock_spotify() -> Generator[MagicMock]:
|
||||
),
|
||||
):
|
||||
client = spotify_mock.return_value
|
||||
client.current_user_playlists.return_value = load_json_value_fixture(
|
||||
"current_user_playlist.json", DOMAIN
|
||||
)
|
||||
# All these fixtures can be retrieved using the Web API client at
|
||||
# https://developer.spotify.com/documentation/web-api
|
||||
current_user = load_json_value_fixture("current_user.json", DOMAIN)
|
||||
client.current_user.return_value = current_user
|
||||
client.me.return_value = current_user
|
||||
client.current_playback.return_value = load_json_value_fixture(
|
||||
"playback.json", DOMAIN
|
||||
)
|
||||
client.playlist.return_value = load_json_value_fixture("playlist.json", DOMAIN)
|
||||
for fixture, method in (
|
||||
("current_user_playlist.json", "current_user_playlists"),
|
||||
("playback.json", "current_playback"),
|
||||
("followed_artists.json", "current_user_followed_artists"),
|
||||
("saved_albums.json", "current_user_saved_albums"),
|
||||
("saved_tracks.json", "current_user_saved_tracks"),
|
||||
("saved_shows.json", "current_user_saved_shows"),
|
||||
("recently_played_tracks.json", "current_user_recently_played"),
|
||||
("top_artists.json", "current_user_top_artists"),
|
||||
("top_tracks.json", "current_user_top_tracks"),
|
||||
("featured_playlists.json", "featured_playlists"),
|
||||
("categories.json", "categories"),
|
||||
("category_playlists.json", "category_playlists"),
|
||||
("category.json", "category"),
|
||||
("new_releases.json", "new_releases"),
|
||||
("playlist.json", "playlist"),
|
||||
("album.json", "album"),
|
||||
("artist.json", "artist"),
|
||||
("artist_albums.json", "artist_albums"),
|
||||
("show_episodes.json", "show_episodes"),
|
||||
("show.json", "show"),
|
||||
):
|
||||
getattr(client, method).return_value = load_json_value_fixture(
|
||||
fixture, DOMAIN
|
||||
)
|
||||
yield spotify_mock
|
||||
|
128
tests/components/spotify/fixtures/album.json
Normal file
128
tests/components/spotify/fixtures/album.json
Normal file
@ -0,0 +1,128 @@
|
||||
{
|
||||
"album_type": "album",
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/3jULn43a6xfzqleyeFjPIq"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/3jULn43a6xfzqleyeFjPIq",
|
||||
"id": "3jULn43a6xfzqleyeFjPIq",
|
||||
"name": "Area 11",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:3jULn43a6xfzqleyeFjPIq"
|
||||
}
|
||||
],
|
||||
"available_markets": [],
|
||||
"copyrights": [
|
||||
{
|
||||
"text": "2020 Smihilism Records",
|
||||
"type": "C"
|
||||
},
|
||||
{
|
||||
"text": "2020 Smihilism Records",
|
||||
"type": "P"
|
||||
}
|
||||
],
|
||||
"external_ids": {
|
||||
"upc": "195916707034"
|
||||
},
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/album/3IqzqH6ShrRtie9Yd2ODyG"
|
||||
},
|
||||
"genres": [],
|
||||
"href": "https://api.spotify.com/v1/albums/3IqzqH6ShrRtie9Yd2ODyG",
|
||||
"id": "3IqzqH6ShrRtie9Yd2ODyG",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab67616d0000b273a61a28c2f084761f8833bce6",
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"height": 300,
|
||||
"url": "https://i.scdn.co/image/ab67616d00001e02a61a28c2f084761f8833bce6",
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"height": 64,
|
||||
"url": "https://i.scdn.co/image/ab67616d00004851a61a28c2f084761f8833bce6",
|
||||
"width": 64
|
||||
}
|
||||
],
|
||||
"label": "Smihilism Records",
|
||||
"name": "SINGLARITY",
|
||||
"popularity": 29,
|
||||
"release_date": "2020-12-18",
|
||||
"release_date_precision": "day",
|
||||
"total_tracks": 11,
|
||||
"tracks": {
|
||||
"href": "https://api.spotify.com/v1/albums/3IqzqH6ShrRtie9Yd2ODyG/tracks?offset=0&limit=50&locale=en-US,en;q=0.5",
|
||||
"items": [
|
||||
{
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/3jULn43a6xfzqleyeFjPIq"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/3jULn43a6xfzqleyeFjPIq",
|
||||
"id": "3jULn43a6xfzqleyeFjPIq",
|
||||
"name": "Area 11",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:3jULn43a6xfzqleyeFjPIq"
|
||||
}
|
||||
],
|
||||
"available_markets": [],
|
||||
"disc_number": 1,
|
||||
"duration_ms": 260372,
|
||||
"explicit": false,
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/track/6akJGriy4njdP8fZTPGjwz"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/tracks/6akJGriy4njdP8fZTPGjwz",
|
||||
"id": "6akJGriy4njdP8fZTPGjwz",
|
||||
"is_local": false,
|
||||
"name": "All Your Friends",
|
||||
"preview_url": "https://p.scdn.co/mp3-preview/484344e579edfdb8e8f872d73299aff2c3d0369d?cid=cfe923b2d660439caf2b557b21f31221",
|
||||
"track_number": 1,
|
||||
"type": "track",
|
||||
"uri": "spotify:track:6akJGriy4njdP8fZTPGjwz"
|
||||
},
|
||||
{
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/3jULn43a6xfzqleyeFjPIq"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/3jULn43a6xfzqleyeFjPIq",
|
||||
"id": "3jULn43a6xfzqleyeFjPIq",
|
||||
"name": "Area 11",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:3jULn43a6xfzqleyeFjPIq"
|
||||
}
|
||||
],
|
||||
"available_markets": [],
|
||||
"disc_number": 1,
|
||||
"duration_ms": 206613,
|
||||
"explicit": true,
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/track/7N02bJK1amhplZ8yAapRS5"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/tracks/7N02bJK1amhplZ8yAapRS5",
|
||||
"id": "7N02bJK1amhplZ8yAapRS5",
|
||||
"is_local": false,
|
||||
"name": "New Magiks",
|
||||
"preview_url": "https://p.scdn.co/mp3-preview/b59a5a73ed2e9a61be471822993e91210d5f255a?cid=cfe923b2d660439caf2b557b21f31221",
|
||||
"track_number": 2,
|
||||
"type": "track",
|
||||
"uri": "spotify:track:7N02bJK1amhplZ8yAapRS5"
|
||||
}
|
||||
],
|
||||
"limit": 50,
|
||||
"next": null,
|
||||
"offset": 0,
|
||||
"previous": null,
|
||||
"total": 11
|
||||
},
|
||||
"type": "album",
|
||||
"uri": "spotify:album:3IqzqH6ShrRtie9Yd2ODyG"
|
||||
}
|
33
tests/components/spotify/fixtures/artist.json
Normal file
33
tests/components/spotify/fixtures/artist.json
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg"
|
||||
},
|
||||
"followers": {
|
||||
"href": null,
|
||||
"total": 10817055
|
||||
},
|
||||
"genres": ["dance pop", "miami hip hop", "pop"],
|
||||
"href": "https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg?locale=en-US%2Cen%3Bq%3D0.5",
|
||||
"id": "0TnOYISbd1XYRBk9myaseg",
|
||||
"images": [
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab6761610000e5ebee07b5820dd91d15d397e29c",
|
||||
"height": 640,
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab67616100005174ee07b5820dd91d15d397e29c",
|
||||
"height": 320,
|
||||
"width": 320
|
||||
},
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab6761610000f178ee07b5820dd91d15d397e29c",
|
||||
"height": 160,
|
||||
"width": 160
|
||||
}
|
||||
],
|
||||
"name": "Pitbull",
|
||||
"popularity": 85,
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:0TnOYISbd1XYRBk9myaseg"
|
||||
}
|
472
tests/components/spotify/fixtures/artist_albums.json
Normal file
472
tests/components/spotify/fixtures/artist_albums.json
Normal file
@ -0,0 +1,472 @@
|
||||
{
|
||||
"href": "https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg/albums?offset=0&limit=20&locale=en-US,en;q%3D0.5&include_groups=album,single,compilation,appears_on",
|
||||
"limit": 20,
|
||||
"next": "https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg/albums?offset=20&limit=20&locale=en-US,en;q%3D0.5&include_groups=album,single,compilation,appears_on",
|
||||
"offset": 0,
|
||||
"previous": null,
|
||||
"total": 903,
|
||||
"items": [
|
||||
{
|
||||
"album_type": "album",
|
||||
"total_tracks": 7,
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/album/56jg3KJcYmfL7RzYmG2O1Q"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/albums/56jg3KJcYmfL7RzYmG2O1Q",
|
||||
"id": "56jg3KJcYmfL7RzYmG2O1Q",
|
||||
"images": [
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab67616d0000b273a0bac1996f26274685db1520",
|
||||
"height": 640,
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab67616d00001e02a0bac1996f26274685db1520",
|
||||
"height": 300,
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab67616d00004851a0bac1996f26274685db1520",
|
||||
"height": 64,
|
||||
"width": 64
|
||||
}
|
||||
],
|
||||
"name": "Trackhouse (Daytona 500 Edition)",
|
||||
"release_date": "2024-02-16",
|
||||
"release_date_precision": "day",
|
||||
"type": "album",
|
||||
"uri": "spotify:album:56jg3KJcYmfL7RzYmG2O1Q",
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg",
|
||||
"id": "0TnOYISbd1XYRBk9myaseg",
|
||||
"name": "Pitbull",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:0TnOYISbd1XYRBk9myaseg"
|
||||
}
|
||||
],
|
||||
"album_group": "album"
|
||||
},
|
||||
{
|
||||
"album_type": "album",
|
||||
"total_tracks": 14,
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/album/1l86t4bTNT2j1X0ZBCIv6R"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/albums/1l86t4bTNT2j1X0ZBCIv6R",
|
||||
"id": "1l86t4bTNT2j1X0ZBCIv6R",
|
||||
"images": [
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab67616d0000b27333a4ba8f73271a749c5d953d",
|
||||
"height": 640,
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab67616d00001e0233a4ba8f73271a749c5d953d",
|
||||
"height": 300,
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab67616d0000485133a4ba8f73271a749c5d953d",
|
||||
"height": 64,
|
||||
"width": 64
|
||||
}
|
||||
],
|
||||
"name": "Trackhouse",
|
||||
"release_date": "2023-10-06",
|
||||
"release_date_precision": "day",
|
||||
"type": "album",
|
||||
"uri": "spotify:album:1l86t4bTNT2j1X0ZBCIv6R",
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/0TnOYISbd1XYRBk9myaseg",
|
||||
"id": "0TnOYISbd1XYRBk9myaseg",
|
||||
"name": "Pitbull",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:0TnOYISbd1XYRBk9myaseg"
|
||||
}
|
||||
],
|
||||
"album_group": "album"
|
||||
}
|
||||
]
|
||||
}
|
36
tests/components/spotify/fixtures/categories.json
Normal file
36
tests/components/spotify/fixtures/categories.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"categories": {
|
||||
"href": "https://api.spotify.com/v1/browse/categories?offset=0&limit=20&locale=en-US,en;q%3D0.5",
|
||||
"items": [
|
||||
{
|
||||
"href": "https://api.spotify.com/v1/browse/categories/0JQ5DAt0tbjZptfcdMSKl3",
|
||||
"id": "0JQ5DAt0tbjZptfcdMSKl3",
|
||||
"icons": [
|
||||
{
|
||||
"height": 274,
|
||||
"url": "https://t.scdn.co/images/728ed47fc1674feb95f7ac20236eb6d7.jpeg",
|
||||
"width": 274
|
||||
}
|
||||
],
|
||||
"name": "Made For You"
|
||||
},
|
||||
{
|
||||
"href": "https://api.spotify.com/v1/browse/categories/0JQ5DAqbMKFz6FAsUtgAab",
|
||||
"id": "0JQ5DAqbMKFz6FAsUtgAab",
|
||||
"icons": [
|
||||
{
|
||||
"height": 274,
|
||||
"url": "https://t.scdn.co/images/728ed47fc1674feb95f7ac20236eb6d7.jpeg",
|
||||
"width": 274
|
||||
}
|
||||
],
|
||||
"name": "New Releases"
|
||||
}
|
||||
],
|
||||
"limit": 20,
|
||||
"next": "https://api.spotify.com/v1/browse/categories?offset=20&limit=20&locale=en-US,en;q%3D0.5",
|
||||
"offset": 0,
|
||||
"previous": null,
|
||||
"total": 56
|
||||
}
|
||||
}
|
12
tests/components/spotify/fixtures/category.json
Normal file
12
tests/components/spotify/fixtures/category.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"href": "https://api.spotify.com/v1/browse/categories/0JQ5DAqbMKFRY5ok2pxXJ0",
|
||||
"id": "0JQ5DAqbMKFRY5ok2pxXJ0",
|
||||
"icons": [
|
||||
{
|
||||
"height": 274,
|
||||
"url": "https://t.scdn.co/media/original/dinner_1b6506abba0ba52c54e6d695c8571078_274x274.jpg",
|
||||
"width": 274
|
||||
}
|
||||
],
|
||||
"name": "Cooking & Dining"
|
||||
}
|
84
tests/components/spotify/fixtures/category_playlists.json
Normal file
84
tests/components/spotify/fixtures/category_playlists.json
Normal file
@ -0,0 +1,84 @@
|
||||
{
|
||||
"playlists": {
|
||||
"href": "https://api.spotify.com/v1/browse/categories/0JQ5DAqbMKFRY5ok2pxXJ0/playlists?country=NL&offset=0&limit=20",
|
||||
"items": [
|
||||
{
|
||||
"collaborative": false,
|
||||
"description": "Lekker eten en lang natafelen? Daar hoort muziek bij.",
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/playlist/37i9dQZF1DX7yhuKT9G4qk"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/playlists/37i9dQZF1DX7yhuKT9G4qk",
|
||||
"id": "37i9dQZF1DX7yhuKT9G4qk",
|
||||
"images": [
|
||||
{
|
||||
"height": null,
|
||||
"url": "https://i.scdn.co/image/ab67706f0000000343319faa9428405f3312b588",
|
||||
"width": null
|
||||
}
|
||||
],
|
||||
"name": "eten met vrienden",
|
||||
"owner": {
|
||||
"display_name": "Spotify",
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/user/spotify"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/users/spotify",
|
||||
"id": "spotify",
|
||||
"type": "user",
|
||||
"uri": "spotify:user:spotify"
|
||||
},
|
||||
"primary_color": null,
|
||||
"public": null,
|
||||
"snapshot_id": "MTcwMTY5Njk3NywwMDAwMDAwMDkyY2JjZDA1MjA2YTBmNzMxMmFlNGI0YzRhMjg0ZWZl",
|
||||
"tracks": {
|
||||
"href": "https://api.spotify.com/v1/playlists/37i9dQZF1DX7yhuKT9G4qk/tracks",
|
||||
"total": 313
|
||||
},
|
||||
"type": "playlist",
|
||||
"uri": "spotify:playlist:37i9dQZF1DX7yhuKT9G4qk"
|
||||
},
|
||||
{
|
||||
"collaborative": false,
|
||||
"description": "From new retro to classic country blues, honky tonk, rockabilly, and more.",
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/playlist/37i9dQZF1DXbvE0SE0Cczh"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/playlists/37i9dQZF1DXbvE0SE0Cczh",
|
||||
"id": "37i9dQZF1DXbvE0SE0Cczh",
|
||||
"images": [
|
||||
{
|
||||
"height": null,
|
||||
"url": "https://i.scdn.co/image/ab67706f00000003b93c270883619dde61725fc8",
|
||||
"width": null
|
||||
}
|
||||
],
|
||||
"name": "Jukebox Joint",
|
||||
"owner": {
|
||||
"display_name": "Spotify",
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/user/spotify"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/users/spotify",
|
||||
"id": "spotify",
|
||||
"type": "user",
|
||||
"uri": "spotify:user:spotify"
|
||||
},
|
||||
"primary_color": null,
|
||||
"public": null,
|
||||
"snapshot_id": "MTY4NjkxODgwMiwwMDAwMDAwMGUwNWRkNjY5N2UzM2Q4NzI4NzRiZmNhMGVmMzAyZTA5",
|
||||
"tracks": {
|
||||
"href": "https://api.spotify.com/v1/playlists/37i9dQZF1DXbvE0SE0Cczh/tracks",
|
||||
"total": 60
|
||||
},
|
||||
"type": "playlist",
|
||||
"uri": "spotify:playlist:37i9dQZF1DXbvE0SE0Cczh"
|
||||
}
|
||||
],
|
||||
"limit": 20,
|
||||
"next": "https://api.spotify.com/v1/browse/categories/0JQ5DAqbMKFRY5ok2pxXJ0/playlists?country=NL&offset=20&limit=20",
|
||||
"offset": 0,
|
||||
"previous": null,
|
||||
"total": 46
|
||||
}
|
||||
}
|
85
tests/components/spotify/fixtures/featured_playlists.json
Normal file
85
tests/components/spotify/fixtures/featured_playlists.json
Normal file
@ -0,0 +1,85 @@
|
||||
{
|
||||
"message": "Popular Playlists",
|
||||
"playlists": {
|
||||
"href": "https://api.spotify.com/v1/browse/featured-playlists?country=NL×tamp=2023-12-18T18%3A35%3A35&offset=0&limit=20",
|
||||
"items": [
|
||||
{
|
||||
"collaborative": false,
|
||||
"description": "De ideale playlist voor het fijne kerstgevoel bij de boom!",
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/playlist/37i9dQZF1DX4dopZ9vOp1t"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/playlists/37i9dQZF1DX4dopZ9vOp1t",
|
||||
"id": "37i9dQZF1DX4dopZ9vOp1t",
|
||||
"images": [
|
||||
{
|
||||
"height": null,
|
||||
"url": "https://i.scdn.co/image/ab67706f000000037d14c267b8ee5fea2246a8fe",
|
||||
"width": null
|
||||
}
|
||||
],
|
||||
"name": "Kerst Hits 2023",
|
||||
"owner": {
|
||||
"display_name": "Spotify",
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/user/spotify"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/users/spotify",
|
||||
"id": "spotify",
|
||||
"type": "user",
|
||||
"uri": "spotify:user:spotify"
|
||||
},
|
||||
"primary_color": null,
|
||||
"public": null,
|
||||
"snapshot_id": "MTcwMjU2ODI4MSwwMDAwMDAwMDE1ZGRiNzI3OGY4OGU2MzA1MWNkZGMyNTdmNDUwMTc1",
|
||||
"tracks": {
|
||||
"href": "https://api.spotify.com/v1/playlists/37i9dQZF1DX4dopZ9vOp1t/tracks",
|
||||
"total": 298
|
||||
},
|
||||
"type": "playlist",
|
||||
"uri": "spotify:playlist:37i9dQZF1DX4dopZ9vOp1t"
|
||||
},
|
||||
{
|
||||
"collaborative": false,
|
||||
"description": "De 50 populairste hits van Nederland. Cover: Jack Harlow",
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/playlist/37i9dQZF1DWSBi5svWQ9Nk"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/playlists/37i9dQZF1DWSBi5svWQ9Nk",
|
||||
"id": "37i9dQZF1DWSBi5svWQ9Nk",
|
||||
"images": [
|
||||
{
|
||||
"height": null,
|
||||
"url": "https://i.scdn.co/image/ab67706f00000003f7b99051789611a49101c1cf",
|
||||
"width": null
|
||||
}
|
||||
],
|
||||
"name": "Top Hits NL",
|
||||
"owner": {
|
||||
"display_name": "Spotify",
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/user/spotify"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/users/spotify",
|
||||
"id": "spotify",
|
||||
"type": "user",
|
||||
"uri": "spotify:user:spotify"
|
||||
},
|
||||
"primary_color": null,
|
||||
"public": null,
|
||||
"snapshot_id": "MTcwMjU5NDgwMCwwMDAwMDAwMDU4NWY2MTE4NmU4NmIwMDdlMGE4ZGRkOTZkN2U2MzAx",
|
||||
"tracks": {
|
||||
"href": "https://api.spotify.com/v1/playlists/37i9dQZF1DWSBi5svWQ9Nk/tracks",
|
||||
"total": 50
|
||||
},
|
||||
"type": "playlist",
|
||||
"uri": "spotify:playlist:37i9dQZF1DWSBi5svWQ9Nk"
|
||||
}
|
||||
],
|
||||
"limit": 20,
|
||||
"next": "https://api.spotify.com/v1/browse/featured-playlists?country=NL×tamp=2023-12-18T18%3A35%3A35&offset=20&limit=20",
|
||||
"offset": 0,
|
||||
"previous": null,
|
||||
"total": 24
|
||||
}
|
||||
}
|
87
tests/components/spotify/fixtures/followed_artists.json
Normal file
87
tests/components/spotify/fixtures/followed_artists.json
Normal file
@ -0,0 +1,87 @@
|
||||
{
|
||||
"artists": {
|
||||
"items": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/0lLY20XpZ9yDobkbHI7u1y"
|
||||
},
|
||||
"followers": {
|
||||
"href": null,
|
||||
"total": 349437
|
||||
},
|
||||
"genres": [
|
||||
"brostep",
|
||||
"complextro",
|
||||
"danish electronic",
|
||||
"edm",
|
||||
"electro house",
|
||||
"glitch",
|
||||
"speedrun"
|
||||
],
|
||||
"href": "https://api.spotify.com/v1/artists/0lLY20XpZ9yDobkbHI7u1y",
|
||||
"id": "0lLY20XpZ9yDobkbHI7u1y",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab6761610000e5eb0fb1220e7e3ace47ebad023e",
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"height": 320,
|
||||
"url": "https://i.scdn.co/image/ab676161000051740fb1220e7e3ace47ebad023e",
|
||||
"width": 320
|
||||
},
|
||||
{
|
||||
"height": 160,
|
||||
"url": "https://i.scdn.co/image/ab6761610000f1780fb1220e7e3ace47ebad023e",
|
||||
"width": 160
|
||||
}
|
||||
],
|
||||
"name": "Pegboard Nerds",
|
||||
"popularity": 52,
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:0lLY20XpZ9yDobkbHI7u1y"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/0p4nmQO2msCgU4IF37Wi3j"
|
||||
},
|
||||
"followers": {
|
||||
"href": null,
|
||||
"total": 11296082
|
||||
},
|
||||
"genres": ["canadian pop", "candy pop", "dance pop", "pop"],
|
||||
"href": "https://api.spotify.com/v1/artists/0p4nmQO2msCgU4IF37Wi3j",
|
||||
"id": "0p4nmQO2msCgU4IF37Wi3j",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab6761610000e5eb5c3349ddba6b8e064c1bab16",
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"height": 320,
|
||||
"url": "https://i.scdn.co/image/ab676161000051745c3349ddba6b8e064c1bab16",
|
||||
"width": 320
|
||||
},
|
||||
{
|
||||
"height": 160,
|
||||
"url": "https://i.scdn.co/image/ab6761610000f1785c3349ddba6b8e064c1bab16",
|
||||
"width": 160
|
||||
}
|
||||
],
|
||||
"name": "Avril Lavigne",
|
||||
"popularity": 78,
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:0p4nmQO2msCgU4IF37Wi3j"
|
||||
}
|
||||
],
|
||||
"next": "https://api.spotify.com/v1/me/following?type=artist&limit=20&locale=en-US,en;q=0.5&after=2NZMqINcyfepvLxQJdzcZk",
|
||||
"total": 74,
|
||||
"cursors": {
|
||||
"after": "2NZMqINcyfepvLxQJdzcZk"
|
||||
},
|
||||
"limit": 20,
|
||||
"href": "https://api.spotify.com/v1/me/following?type=artist&limit=20&locale=en-US,en;q=0.5"
|
||||
}
|
||||
}
|
469
tests/components/spotify/fixtures/new_releases.json
Normal file
469
tests/components/spotify/fixtures/new_releases.json
Normal file
@ -0,0 +1,469 @@
|
||||
{
|
||||
"albums": {
|
||||
"href": "https://api.spotify.com/v1/browse/new-releases?offset=0&limit=20&locale=en-US,en;q%3D0.5",
|
||||
"items": [
|
||||
{
|
||||
"album_type": "album",
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/4gzpq5DPGxSnKTe4SA8HAU"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/4gzpq5DPGxSnKTe4SA8HAU",
|
||||
"id": "4gzpq5DPGxSnKTe4SA8HAU",
|
||||
"name": "Coldplay",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:4gzpq5DPGxSnKTe4SA8HAU"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/album/5SGtrmYbIo0Dsg4kJ4qjM6"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/albums/5SGtrmYbIo0Dsg4kJ4qjM6",
|
||||
"id": "5SGtrmYbIo0Dsg4kJ4qjM6",
|
||||
"images": [
|
||||
{
|
||||
"height": 300,
|
||||
"url": "https://i.scdn.co/image/ab67616d00001e0209ba52a5116e0c3e8461f58b",
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"height": 64,
|
||||
"url": "https://i.scdn.co/image/ab67616d0000485109ba52a5116e0c3e8461f58b",
|
||||
"width": 64
|
||||
},
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab67616d0000b27309ba52a5116e0c3e8461f58b",
|
||||
"width": 640
|
||||
}
|
||||
],
|
||||
"name": "Moon Music",
|
||||
"release_date": "2024-10-04",
|
||||
"release_date_precision": "day",
|
||||
"total_tracks": 10,
|
||||
"type": "album",
|
||||
"uri": "spotify:album:5SGtrmYbIo0Dsg4kJ4qjM6"
|
||||
},
|
||||
{
|
||||
"album_type": "album",
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/4U9nsRTH2mr9L4UXEWqG5e"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/4U9nsRTH2mr9L4UXEWqG5e",
|
||||
"id": "4U9nsRTH2mr9L4UXEWqG5e",
|
||||
"name": "Bente",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:4U9nsRTH2mr9L4UXEWqG5e"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/album/713lZ7AF55fEFSQgcttj9y"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/albums/713lZ7AF55fEFSQgcttj9y",
|
||||
"id": "713lZ7AF55fEFSQgcttj9y",
|
||||
"images": [
|
||||
{
|
||||
"height": 300,
|
||||
"url": "https://i.scdn.co/image/ab67616d00001e02ab9953b1d18f8233f6b26027",
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"height": 64,
|
||||
"url": "https://i.scdn.co/image/ab67616d00004851ab9953b1d18f8233f6b26027",
|
||||
"width": 64
|
||||
},
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab67616d0000b273ab9953b1d18f8233f6b26027",
|
||||
"width": 640
|
||||
}
|
||||
],
|
||||
"name": "drift",
|
||||
"release_date": "2024-10-03",
|
||||
"release_date_precision": "day",
|
||||
"total_tracks": 14,
|
||||
"type": "album",
|
||||
"uri": "spotify:album:713lZ7AF55fEFSQgcttj9y"
|
||||
}
|
||||
],
|
||||
"limit": 20,
|
||||
"next": "https://api.spotify.com/v1/browse/new-releases?offset=20&limit=20&locale=en-US,en;q%3D0.5",
|
||||
"offset": 0,
|
||||
"previous": null,
|
||||
"total": 100
|
||||
}
|
||||
}
|
964
tests/components/spotify/fixtures/recently_played_tracks.json
Normal file
964
tests/components/spotify/fixtures/recently_played_tracks.json
Normal file
@ -0,0 +1,964 @@
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"track": {
|
||||
"album": {
|
||||
"album_type": "single",
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/6emHCSoB4tJxTVXakbrpPz"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/6emHCSoB4tJxTVXakbrpPz",
|
||||
"id": "6emHCSoB4tJxTVXakbrpPz",
|
||||
"name": "Karen O",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:6emHCSoB4tJxTVXakbrpPz"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/2dBj3prW7gP9bCCOIQeDUf"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/2dBj3prW7gP9bCCOIQeDUf",
|
||||
"id": "2dBj3prW7gP9bCCOIQeDUf",
|
||||
"name": "Danger Mouse",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:2dBj3prW7gP9bCCOIQeDUf"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/album/6Ab1VSoMD5fvlagOW2QDOJ"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/albums/6Ab1VSoMD5fvlagOW2QDOJ",
|
||||
"id": "6Ab1VSoMD5fvlagOW2QDOJ",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab67616d0000b273cdac047e7894fb56a0dfdcde",
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"height": 300,
|
||||
"url": "https://i.scdn.co/image/ab67616d00001e02cdac047e7894fb56a0dfdcde",
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"height": 64,
|
||||
"url": "https://i.scdn.co/image/ab67616d00004851cdac047e7894fb56a0dfdcde",
|
||||
"width": 64
|
||||
}
|
||||
],
|
||||
"name": "Super Breath",
|
||||
"release_date": "2024-07-24",
|
||||
"release_date_precision": "day",
|
||||
"total_tracks": 1,
|
||||
"type": "album",
|
||||
"uri": "spotify:album:6Ab1VSoMD5fvlagOW2QDOJ"
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/6emHCSoB4tJxTVXakbrpPz"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/6emHCSoB4tJxTVXakbrpPz",
|
||||
"id": "6emHCSoB4tJxTVXakbrpPz",
|
||||
"name": "Karen O",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:6emHCSoB4tJxTVXakbrpPz"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/2dBj3prW7gP9bCCOIQeDUf"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/2dBj3prW7gP9bCCOIQeDUf",
|
||||
"id": "2dBj3prW7gP9bCCOIQeDUf",
|
||||
"name": "Danger Mouse",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:2dBj3prW7gP9bCCOIQeDUf"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"disc_number": 1,
|
||||
"duration_ms": 211800,
|
||||
"explicit": false,
|
||||
"external_ids": {
|
||||
"isrc": "QMB622409101"
|
||||
},
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/track/71dMjqJ8UJV700zYs5YZCh"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/tracks/71dMjqJ8UJV700zYs5YZCh",
|
||||
"id": "71dMjqJ8UJV700zYs5YZCh",
|
||||
"is_local": false,
|
||||
"name": "Super Breath",
|
||||
"popularity": 58,
|
||||
"preview_url": "https://p.scdn.co/mp3-preview/f1ee3ade75c6eb5cb227ed8c96de8674d8ce581f?cid=cfe923b2d660439caf2b557b21f31221",
|
||||
"track_number": 1,
|
||||
"type": "track",
|
||||
"uri": "spotify:track:71dMjqJ8UJV700zYs5YZCh"
|
||||
},
|
||||
"played_at": "2024-10-06T18:09:18.556Z",
|
||||
"context": null
|
||||
},
|
||||
{
|
||||
"track": {
|
||||
"album": {
|
||||
"album_type": "single",
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/6emHCSoB4tJxTVXakbrpPz"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/6emHCSoB4tJxTVXakbrpPz",
|
||||
"id": "6emHCSoB4tJxTVXakbrpPz",
|
||||
"name": "Karen O",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:6emHCSoB4tJxTVXakbrpPz"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/2dBj3prW7gP9bCCOIQeDUf"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/2dBj3prW7gP9bCCOIQeDUf",
|
||||
"id": "2dBj3prW7gP9bCCOIQeDUf",
|
||||
"name": "Danger Mouse",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:2dBj3prW7gP9bCCOIQeDUf"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/album/6Ab1VSoMD5fvlagOW2QDOJ"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/albums/6Ab1VSoMD5fvlagOW2QDOJ",
|
||||
"id": "6Ab1VSoMD5fvlagOW2QDOJ",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab67616d0000b273cdac047e7894fb56a0dfdcde",
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"height": 300,
|
||||
"url": "https://i.scdn.co/image/ab67616d00001e02cdac047e7894fb56a0dfdcde",
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"height": 64,
|
||||
"url": "https://i.scdn.co/image/ab67616d00004851cdac047e7894fb56a0dfdcde",
|
||||
"width": 64
|
||||
}
|
||||
],
|
||||
"name": "Super Breath",
|
||||
"release_date": "2024-07-24",
|
||||
"release_date_precision": "day",
|
||||
"total_tracks": 1,
|
||||
"type": "album",
|
||||
"uri": "spotify:album:6Ab1VSoMD5fvlagOW2QDOJ"
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/6emHCSoB4tJxTVXakbrpPz"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/6emHCSoB4tJxTVXakbrpPz",
|
||||
"id": "6emHCSoB4tJxTVXakbrpPz",
|
||||
"name": "Karen O",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:6emHCSoB4tJxTVXakbrpPz"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/2dBj3prW7gP9bCCOIQeDUf"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/2dBj3prW7gP9bCCOIQeDUf",
|
||||
"id": "2dBj3prW7gP9bCCOIQeDUf",
|
||||
"name": "Danger Mouse",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:2dBj3prW7gP9bCCOIQeDUf"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"disc_number": 1,
|
||||
"duration_ms": 211800,
|
||||
"explicit": false,
|
||||
"external_ids": {
|
||||
"isrc": "QMB622409101"
|
||||
},
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/track/71dMjqJ8UJV700zYs5YZCh"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/tracks/71dMjqJ8UJV700zYs5YZCh",
|
||||
"id": "71dMjqJ8UJV700zYs5YZCh",
|
||||
"is_local": false,
|
||||
"name": "Super Breath",
|
||||
"popularity": 58,
|
||||
"preview_url": "https://p.scdn.co/mp3-preview/f1ee3ade75c6eb5cb227ed8c96de8674d8ce581f?cid=cfe923b2d660439caf2b557b21f31221",
|
||||
"track_number": 1,
|
||||
"type": "track",
|
||||
"uri": "spotify:track:71dMjqJ8UJV700zYs5YZCh"
|
||||
},
|
||||
"played_at": "2024-10-06T18:05:33.902Z",
|
||||
"context": {
|
||||
"type": "album",
|
||||
"href": "https://api.spotify.com/v1/albums/57MSBg5pBQZH5bfLVDmeuP",
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/album/57MSBg5pBQZH5bfLVDmeuP"
|
||||
},
|
||||
"uri": "spotify:album:57MSBg5pBQZH5bfLVDmeuP"
|
||||
}
|
||||
}
|
||||
],
|
||||
"next": "https://api.spotify.com/v1/me/player/recently-played?before=1728234176022",
|
||||
"cursors": {
|
||||
"after": "1728238158556",
|
||||
"before": "1728234176022"
|
||||
},
|
||||
"limit": 20,
|
||||
"href": "https://api.spotify.com/v1/me/player/recently-played"
|
||||
}
|
7637
tests/components/spotify/fixtures/saved_albums.json
Normal file
7637
tests/components/spotify/fixtures/saved_albums.json
Normal file
File diff suppressed because it is too large
Load Diff
462
tests/components/spotify/fixtures/saved_shows.json
Normal file
462
tests/components/spotify/fixtures/saved_shows.json
Normal file
@ -0,0 +1,462 @@
|
||||
{
|
||||
"href": "https://api.spotify.com/v1/me/shows?offset=0&limit=20&locale=en-US,en;q%3D0.5",
|
||||
"items": [
|
||||
{
|
||||
"added_at": "2023-08-10T08:17:09Z",
|
||||
"show": {
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"copyrights": [],
|
||||
"description": "We’ll all giggle along at naughty jokes, your dating horror stories and give questionable recommendations on movies, food and relationships. This podcast is hot, fun garbage and we (Toni Lodge and Ryan Jon here in Melbourne, Australia) would love you to climb aboard and be our friends. Hosted on Acast. See acast.com/privacy for more information.",
|
||||
"explicit": true,
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/show/5OzkclFjD6iAjtAuo7aIYt"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/shows/5OzkclFjD6iAjtAuo7aIYt",
|
||||
"html_description": "We’ll all giggle along at naughty jokes, your dating horror stories and give questionable recommendations on movies, food and relationships. This podcast is hot, fun garbage and we (Toni Lodge and Ryan Jon here in Melbourne, Australia) would love you to climb aboard and be our friends.<br /><p> Hosted on Acast. See <a href=\"https://acast.com/privacy\" rel=\"nofollow\">acast.com/privacy</a> for more information.</p>",
|
||||
"id": "5OzkclFjD6iAjtAuo7aIYt",
|
||||
"images": [
|
||||
{
|
||||
"height": 64,
|
||||
"url": "https://i.scdn.co/image/ab6765630000f68db5f65a943ef4f707bf79949b",
|
||||
"width": 64
|
||||
},
|
||||
{
|
||||
"height": 300,
|
||||
"url": "https://i.scdn.co/image/ab67656300005f1fb5f65a943ef4f707bf79949b",
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab6765630000ba8ab5f65a943ef4f707bf79949b",
|
||||
"width": 640
|
||||
}
|
||||
],
|
||||
"is_externally_hosted": false,
|
||||
"languages": ["en"],
|
||||
"media_type": "audio",
|
||||
"name": "Toni and Ryan",
|
||||
"publisher": "Toni Lodge and Ryan Jon",
|
||||
"total_episodes": 741,
|
||||
"type": "show",
|
||||
"uri": "spotify:show:5OzkclFjD6iAjtAuo7aIYt"
|
||||
}
|
||||
},
|
||||
{
|
||||
"added_at": "2022-09-15T23:48:23Z",
|
||||
"show": {
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"copyrights": [],
|
||||
"description": "Welcome to BLAST Push To Talk, Counter-Strike like you’ve never heard it before.Join our host Moses and our field reporters Scrawny and Launders as they interview pro players, share their hot takes on the latest and greatest news in the CS world courtesy of EPOS.",
|
||||
"explicit": false,
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/show/6XYRres0KZtnTqKcLavWR2"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/shows/6XYRres0KZtnTqKcLavWR2",
|
||||
"html_description": "Welcome to BLAST Push To Talk, Counter-Strike like you’ve never heard it before.<br /><br />Join our host Moses and our field reporters Scrawny and Launders as they interview pro players, share their hot takes on the latest and greatest news in the CS world courtesy of EPOS.",
|
||||
"id": "6XYRres0KZtnTqKcLavWR2",
|
||||
"images": [
|
||||
{
|
||||
"height": 64,
|
||||
"url": "https://i.scdn.co/image/ab6765630000f68d5fccb05c5685c081d5c2ad9c",
|
||||
"width": 64
|
||||
},
|
||||
{
|
||||
"height": 300,
|
||||
"url": "https://i.scdn.co/image/ab67656300005f1f5fccb05c5685c081d5c2ad9c",
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab6765630000ba8a5fccb05c5685c081d5c2ad9c",
|
||||
"width": 640
|
||||
}
|
||||
],
|
||||
"is_externally_hosted": false,
|
||||
"languages": ["en"],
|
||||
"media_type": "audio",
|
||||
"name": "BLAST Push To Talk",
|
||||
"publisher": "BLAST Premier",
|
||||
"total_episodes": 19,
|
||||
"type": "show",
|
||||
"uri": "spotify:show:6XYRres0KZtnTqKcLavWR2"
|
||||
}
|
||||
}
|
||||
],
|
||||
"limit": 20,
|
||||
"next": null,
|
||||
"offset": 0,
|
||||
"previous": null,
|
||||
"total": 10
|
||||
}
|
978
tests/components/spotify/fixtures/saved_tracks.json
Normal file
978
tests/components/spotify/fixtures/saved_tracks.json
Normal file
@ -0,0 +1,978 @@
|
||||
{
|
||||
"href": "https://api.spotify.com/v1/me/tracks?offset=0&limit=20&locale=en-US,en;q%3D0.5",
|
||||
"items": [
|
||||
{
|
||||
"added_at": "2024-10-06T11:35:02Z",
|
||||
"track": {
|
||||
"album": {
|
||||
"album_type": "single",
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/7zrkALJ9ayRjzysp4QYoEg"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/7zrkALJ9ayRjzysp4QYoEg",
|
||||
"id": "7zrkALJ9ayRjzysp4QYoEg",
|
||||
"name": "Maribou State",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:7zrkALJ9ayRjzysp4QYoEg"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/5vssQp6TyMHsx4mihKVAsC"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/5vssQp6TyMHsx4mihKVAsC",
|
||||
"id": "5vssQp6TyMHsx4mihKVAsC",
|
||||
"name": "Holly Walker",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:5vssQp6TyMHsx4mihKVAsC"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/album/3BYf1IG8EqDbhzdpljcFWY"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/albums/3BYf1IG8EqDbhzdpljcFWY",
|
||||
"id": "3BYf1IG8EqDbhzdpljcFWY",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"width": 640,
|
||||
"url": "https://i.scdn.co/image/ab67616d0000b273ac9dd449e38e5e8952fd22ad"
|
||||
},
|
||||
{
|
||||
"height": 300,
|
||||
"width": 300,
|
||||
"url": "https://i.scdn.co/image/ab67616d00001e02ac9dd449e38e5e8952fd22ad"
|
||||
},
|
||||
{
|
||||
"height": 64,
|
||||
"width": 64,
|
||||
"url": "https://i.scdn.co/image/ab67616d00004851ac9dd449e38e5e8952fd22ad"
|
||||
}
|
||||
],
|
||||
"is_playable": true,
|
||||
"name": "Otherside",
|
||||
"release_date": "2024-10-02",
|
||||
"release_date_precision": "day",
|
||||
"total_tracks": 2,
|
||||
"type": "album",
|
||||
"uri": "spotify:album:3BYf1IG8EqDbhzdpljcFWY"
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/7zrkALJ9ayRjzysp4QYoEg"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/7zrkALJ9ayRjzysp4QYoEg",
|
||||
"id": "7zrkALJ9ayRjzysp4QYoEg",
|
||||
"name": "Maribou State",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:7zrkALJ9ayRjzysp4QYoEg"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/5vssQp6TyMHsx4mihKVAsC"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/5vssQp6TyMHsx4mihKVAsC",
|
||||
"id": "5vssQp6TyMHsx4mihKVAsC",
|
||||
"name": "Holly Walker",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:5vssQp6TyMHsx4mihKVAsC"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"disc_number": 1,
|
||||
"duration_ms": 233211,
|
||||
"explicit": false,
|
||||
"external_ids": {
|
||||
"isrc": "GBCFB2300767"
|
||||
},
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/track/2pj2A25YQK4uMxhZheNx7R"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/tracks/2pj2A25YQK4uMxhZheNx7R",
|
||||
"id": "2pj2A25YQK4uMxhZheNx7R",
|
||||
"is_local": false,
|
||||
"is_playable": true,
|
||||
"name": "Otherside",
|
||||
"popularity": 47,
|
||||
"preview_url": "https://p.scdn.co/mp3-preview/f18011c5d9a973f85ed8dce6d698e6043efdcf60?cid=cfe923b2d660439caf2b557b21f31221",
|
||||
"track_number": 1,
|
||||
"type": "track",
|
||||
"uri": "spotify:track:2pj2A25YQK4uMxhZheNx7R"
|
||||
}
|
||||
},
|
||||
{
|
||||
"added_at": "2024-10-06T07:37:53Z",
|
||||
"track": {
|
||||
"album": {
|
||||
"album_type": "single",
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/0HHa7ZJZxUQlg5l2mB0N0f"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/0HHa7ZJZxUQlg5l2mB0N0f",
|
||||
"id": "0HHa7ZJZxUQlg5l2mB0N0f",
|
||||
"name": "Marlon Hoffstadt",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:0HHa7ZJZxUQlg5l2mB0N0f"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/68sTQgQtPe9e4Bb7OtoqET"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/68sTQgQtPe9e4Bb7OtoqET",
|
||||
"id": "68sTQgQtPe9e4Bb7OtoqET",
|
||||
"name": "Crybaby",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:68sTQgQtPe9e4Bb7OtoqET"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/4lBSzo2LS8asEzoePv6VLM"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/4lBSzo2LS8asEzoePv6VLM",
|
||||
"id": "4lBSzo2LS8asEzoePv6VLM",
|
||||
"name": "DJ Daddy Trance",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:4lBSzo2LS8asEzoePv6VLM"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/album/1ElP3WFqq5sgMcc3ScIR4l"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/albums/1ElP3WFqq5sgMcc3ScIR4l",
|
||||
"id": "1ElP3WFqq5sgMcc3ScIR4l",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"width": 640,
|
||||
"url": "https://i.scdn.co/image/ab67616d0000b2733d710ab088ff797e80cc5aed"
|
||||
},
|
||||
{
|
||||
"height": 300,
|
||||
"width": 300,
|
||||
"url": "https://i.scdn.co/image/ab67616d00001e023d710ab088ff797e80cc5aed"
|
||||
},
|
||||
{
|
||||
"height": 64,
|
||||
"width": 64,
|
||||
"url": "https://i.scdn.co/image/ab67616d000048513d710ab088ff797e80cc5aed"
|
||||
}
|
||||
],
|
||||
"is_playable": true,
|
||||
"name": "I Think I Need A DJ",
|
||||
"release_date": "2024-09-20",
|
||||
"release_date_precision": "day",
|
||||
"total_tracks": 1,
|
||||
"type": "album",
|
||||
"uri": "spotify:album:1ElP3WFqq5sgMcc3ScIR4l"
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/0HHa7ZJZxUQlg5l2mB0N0f"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/0HHa7ZJZxUQlg5l2mB0N0f",
|
||||
"id": "0HHa7ZJZxUQlg5l2mB0N0f",
|
||||
"name": "Marlon Hoffstadt",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:0HHa7ZJZxUQlg5l2mB0N0f"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/68sTQgQtPe9e4Bb7OtoqET"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/68sTQgQtPe9e4Bb7OtoqET",
|
||||
"id": "68sTQgQtPe9e4Bb7OtoqET",
|
||||
"name": "Crybaby",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:68sTQgQtPe9e4Bb7OtoqET"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/4lBSzo2LS8asEzoePv6VLM"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/4lBSzo2LS8asEzoePv6VLM",
|
||||
"id": "4lBSzo2LS8asEzoePv6VLM",
|
||||
"name": "DJ Daddy Trance",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:4lBSzo2LS8asEzoePv6VLM"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"disc_number": 1,
|
||||
"duration_ms": 155000,
|
||||
"explicit": false,
|
||||
"external_ids": {
|
||||
"isrc": "DEKF22400978"
|
||||
},
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/track/2lKOI1nwP5qZtZC7TGQVY8"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/tracks/2lKOI1nwP5qZtZC7TGQVY8",
|
||||
"id": "2lKOI1nwP5qZtZC7TGQVY8",
|
||||
"is_local": false,
|
||||
"is_playable": true,
|
||||
"name": "I Think I Need A DJ",
|
||||
"popularity": 53,
|
||||
"preview_url": "https://p.scdn.co/mp3-preview/ad1c9d47d0f5ed500118e9dfc2558bd77612cae3?cid=cfe923b2d660439caf2b557b21f31221",
|
||||
"track_number": 1,
|
||||
"type": "track",
|
||||
"uri": "spotify:track:2lKOI1nwP5qZtZC7TGQVY8"
|
||||
}
|
||||
}
|
||||
],
|
||||
"limit": 2,
|
||||
"next": "https://api.spotify.com/v1/me/tracks?offset=20&limit=20&locale=en-US,en;q%3D0.5",
|
||||
"offset": 0,
|
||||
"previous": null,
|
||||
"total": 4816
|
||||
}
|
317
tests/components/spotify/fixtures/show.json
Normal file
317
tests/components/spotify/fixtures/show.json
Normal file
@ -0,0 +1,317 @@
|
||||
{
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"BY",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"copyrights": [],
|
||||
"description": "Safety Third is a weekly show hosted by William Osman, NileRed, The Backyard Scientist, Allen Pan, and a couple other YouTube \"Scientists\". Sometimes we have guests, sometimes it's just us, but always: safety is our number three priority.",
|
||||
"html_description": "<p>Safety Third is a weekly show hosted by William Osman, NileRed, The Backyard Scientist, Allen Pan, and a couple other YouTube "Scientists". Sometimes we have guests, sometimes it's just us, but always: safety is our number three priority.</p>",
|
||||
"explicit": true,
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/show/1Y9ExMgMxoBVrgrfU7u0nD"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/shows/1Y9ExMgMxoBVrgrfU7u0nD?locale=en-US%2Cen%3Bq%3D0.5",
|
||||
"id": "1Y9ExMgMxoBVrgrfU7u0nD",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab6765630000ba8ac7bedd27a4413b1abf926d8a",
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"height": 300,
|
||||
"url": "https://i.scdn.co/image/ab67656300005f1fc7bedd27a4413b1abf926d8a",
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"height": 64,
|
||||
"url": "https://i.scdn.co/image/ab6765630000f68dc7bedd27a4413b1abf926d8a",
|
||||
"width": 64
|
||||
}
|
||||
],
|
||||
"is_externally_hosted": false,
|
||||
"languages": ["en-US"],
|
||||
"media_type": "audio",
|
||||
"name": "Safety Third",
|
||||
"publisher": "Safety Third ",
|
||||
"type": "show",
|
||||
"uri": "spotify:show:1Y9ExMgMxoBVrgrfU7u0nD",
|
||||
"total_episodes": 120,
|
||||
"episodes": {
|
||||
"href": "https://api.spotify.com/v1/shows/1Y9ExMgMxoBVrgrfU7u0nD/episodes?offset=0&limit=50&locale=en-US,en;q%3D0.5",
|
||||
"limit": 50,
|
||||
"next": "https://api.spotify.com/v1/shows/1Y9ExMgMxoBVrgrfU7u0nD/episodes?offset=50&limit=50&locale=en-US,en;q%3D0.5",
|
||||
"offset": 0,
|
||||
"previous": null,
|
||||
"total": 120,
|
||||
"items": [
|
||||
{
|
||||
"audio_preview_url": "https://podz-content.spotifycdn.com/audio/clips/06lRxUmh8UNVTByuyxLYqh/clip_132296_192296.mp3",
|
||||
"description": "Patreon: https://www.patreon.com/safetythirdMerch: https://safetythird.shopYouTube: https://www.youtube.com/@safetythird/Advertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy",
|
||||
"html_description": "<p>Patreon: https://www.patreon.com/safetythird</p><p>Merch: https://safetythird.shop</p><p>YouTube: https://www.youtube.com/@safetythird/</p><br /><br />Advertising Inquiries: <a href=\"https://redcircle.com/brands\" rel=\"nofollow\">https://redcircle.com/brands</a><br /><br />Privacy & Opt-Out: <a href=\"https://redcircle.com/privacy\" rel=\"nofollow\">https://redcircle.com/privacy</a>",
|
||||
"duration_ms": 3690161,
|
||||
"explicit": false,
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/episode/3o0RYoo5iOMKSmEbunsbvW"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/episodes/3o0RYoo5iOMKSmEbunsbvW",
|
||||
"id": "3o0RYoo5iOMKSmEbunsbvW",
|
||||
"images": [
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab6765630000ba8ac7bedd27a4413b1abf926d8a",
|
||||
"height": 640,
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab67656300005f1fc7bedd27a4413b1abf926d8a",
|
||||
"height": 300,
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab6765630000f68dc7bedd27a4413b1abf926d8a",
|
||||
"height": 64,
|
||||
"width": 64
|
||||
}
|
||||
],
|
||||
"is_externally_hosted": true,
|
||||
"is_playable": true,
|
||||
"language": "en-US",
|
||||
"languages": ["en-US"],
|
||||
"name": "My Squirrel Has Brain Damage - Safety Third 119",
|
||||
"release_date": "2024-07-26",
|
||||
"release_date_precision": "day",
|
||||
"resume_point": {
|
||||
"fully_played": false,
|
||||
"resume_position_ms": 0
|
||||
},
|
||||
"type": "episode",
|
||||
"uri": "spotify:episode:3o0RYoo5iOMKSmEbunsbvW"
|
||||
},
|
||||
{
|
||||
"audio_preview_url": "https://podz-content.spotifycdn.com/audio/clips/6msRFio3561me28DofTad7/clip_570865_630865.mp3",
|
||||
"description": "Patreon: https://www.patreon.com/safetythirdMerch: https://safetythird.shopYouTube: https://www.youtube.com/@safetythird/Advertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy",
|
||||
"html_description": "<p>Patreon: https://www.patreon.com/safetythird</p><p>Merch: https://safetythird.shop</p><p>YouTube: https://www.youtube.com/@safetythird/</p><br /><br />Advertising Inquiries: <a href=\"https://redcircle.com/brands\" rel=\"nofollow\">https://redcircle.com/brands</a><br /><br />Privacy & Opt-Out: <a href=\"https://redcircle.com/privacy\" rel=\"nofollow\">https://redcircle.com/privacy</a>",
|
||||
"duration_ms": 5690591,
|
||||
"explicit": false,
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/episode/7CbsFHQq8ljztiUSGw46Fj"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/episodes/7CbsFHQq8ljztiUSGw46Fj",
|
||||
"id": "7CbsFHQq8ljztiUSGw46Fj",
|
||||
"images": [
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab6765630000ba8ac7bedd27a4413b1abf926d8a",
|
||||
"height": 640,
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab67656300005f1fc7bedd27a4413b1abf926d8a",
|
||||
"height": 300,
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"url": "https://i.scdn.co/image/ab6765630000f68dc7bedd27a4413b1abf926d8a",
|
||||
"height": 64,
|
||||
"width": 64
|
||||
}
|
||||
],
|
||||
"is_externally_hosted": true,
|
||||
"is_playable": true,
|
||||
"language": "en-US",
|
||||
"languages": ["en-US"],
|
||||
"name": "Math Haters vs Math Nerd - Safety Third 118",
|
||||
"release_date": "2024-07-18",
|
||||
"release_date_precision": "day",
|
||||
"resume_point": {
|
||||
"fully_played": false,
|
||||
"resume_position_ms": 0
|
||||
},
|
||||
"type": "episode",
|
||||
"uri": "spotify:episode:7CbsFHQq8ljztiUSGw46Fj"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
94
tests/components/spotify/fixtures/show_episodes.json
Normal file
94
tests/components/spotify/fixtures/show_episodes.json
Normal file
@ -0,0 +1,94 @@
|
||||
{
|
||||
"href": "https://api.spotify.com/v1/shows/0e30iIgSffe6xJhFKe35Db/episodes?offset=0&limit=20&locale=en-US,en;q%3D0.5",
|
||||
"items": [
|
||||
{
|
||||
"audio_preview_url": "https://podz-content.spotifycdn.com/audio/clips/2O4OLlf7wsvLzCeUbNB3UK/clip_1204000_1256300.mp3",
|
||||
"description": "The Great War of 2077 and how the Fallout world diverged from our own.Sponsors: Patreon: Become a patron! https://patreon.com/falloutlorecastBuy cool stuff and support the show!Fallout 76: https://amzn.to/3h99B3UFallout Cookbook: https://amzn.to/3aGjeodFallout Boardgame: https://amzn.to/2EgmBq3The Art of Fallout 4: https://amzn.to/3gfQST3Get a REAL Nuca-Cola Quantum! https://amzn.to/322O3zGFallout Funco Pop Figures: https://amzn.to/3gcYsOcLinks: Live Shows every Monday Night and game streams: twitch.tv/robotsradioFallout Hub Podcast w/ Tom & others: https://anchor.fm/the-fallout-hubTalk Fallout and join the Robots Radio fam: Discord: discord.gg/JXKfVhMStay plugged in on Twitter: twitter.com/falloutlorecastRobots Radio Youtube: youtube.com/c/r0b0tsSend me a note! Email: falloutlorecast@gmail.com www.robotsradio.netOur Sponsors:* Check out Bandai Namco: unknown9.com/FALLOUTLOREAdvertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy",
|
||||
"duration_ms": 2117616,
|
||||
"explicit": false,
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/episode/3ssmxnilHYaKhwRWoBGMbU"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/episodes/3ssmxnilHYaKhwRWoBGMbU",
|
||||
"html_description": "<p>The Great War of 2077 and how the Fallout world diverged from our own.</p><p>Sponsors: Patreon: Become a patron! https://patreon.com/falloutlorecast</p><p>Buy cool stuff and support the show!</p><p>Fallout 76: https://amzn.to/3h99B3U</p><p>Fallout Cookbook: https://amzn.to/3aGjeod</p><p>Fallout Boardgame: https://amzn.to/2EgmBq3</p><p>The Art of Fallout 4: https://amzn.to/3gfQST3</p><p>Get a REAL Nuca-Cola Quantum! https://amzn.to/322O3zG</p><p>Fallout Funco Pop Figures: https://amzn.to/3gcYsOc</p><p>Links: Live Shows every Monday Night and game streams: twitch.tv/robotsradio</p><p>Fallout Hub Podcast w/ Tom & others: https://anchor.fm/the-fallout-hub</p><p>Talk Fallout and join the Robots Radio fam: Discord: discord.gg/JXKfVhM</p><p>Stay plugged in on Twitter: twitter.com/falloutlorecast</p><p>Robots Radio Youtube: youtube.com/c/r0b0ts</p><p>Send me a note! Email: falloutlorecast@gmail.com www.robotsradio.net</p><br /><br />Our Sponsors:<br />* Check out Bandai Namco: unknown9.com/FALLOUTLORE<br /><br /><br />Advertising Inquiries: <a href=\"https://redcircle.com/brands\" rel=\"nofollow\">https://redcircle.com/brands</a><br /><br />Privacy & Opt-Out: <a href=\"https://redcircle.com/privacy\" rel=\"nofollow\">https://redcircle.com/privacy</a>",
|
||||
"id": "3ssmxnilHYaKhwRWoBGMbU",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab6765630000ba8af44e9ef63c2d6fb44cb0c9bf",
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"height": 300,
|
||||
"url": "https://i.scdn.co/image/ab67656300005f1ff44e9ef63c2d6fb44cb0c9bf",
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"height": 64,
|
||||
"url": "https://i.scdn.co/image/ab6765630000f68df44e9ef63c2d6fb44cb0c9bf",
|
||||
"width": 64
|
||||
}
|
||||
],
|
||||
"is_externally_hosted": false,
|
||||
"is_playable": true,
|
||||
"language": "en-US",
|
||||
"languages": ["en-US"],
|
||||
"name": "The Great War - Fallout Lorecast EP 1",
|
||||
"release_date": "2019-01-09",
|
||||
"release_date_precision": "day",
|
||||
"resume_point": {
|
||||
"fully_played": false,
|
||||
"resume_position_ms": 0
|
||||
},
|
||||
"type": "episode",
|
||||
"uri": "spotify:episode:3ssmxnilHYaKhwRWoBGMbU"
|
||||
},
|
||||
{
|
||||
"audio_preview_url": "https://podz-content.spotifycdn.com/audio/clips/0PGDORXTYiO2Til9131l6X/clip_310950_371500.mp3",
|
||||
"description": "Support the show to keep it going, plus get great rewards at patreon.com/falloutlorecast Sponsors: Patreon: Become a patron! https://patreon.com/falloutlorecast Audiobooks.com - Get 3 FREE Audiobooks! https://www.dpbolvw.net/click-100173810-11099382?sid=flore Gamefly - Want 2 months of rentals for the price of 1 at Gamefly? https://www.dpbolvw.net/click-100173810-10495782?sid=flore Loot Crate - 15% off Loot Crate. Click the link and use coupon code: ROBOTSRADIO https://www.dpbolvw.net/click-100173810-13902093?sid=flore GreenMan Gaming - Get awesome discounts on games. https://www.dpbolvw.net/click-100173810-13764551?sid=flore NordVPN - Stay Safe on the Internet and get 68% off. https://www.dpbolvw.net/click-100173810-12814552?sid=flore Buy cool stuff and support the show! Fallout 76: https://amzn.to/3h99B3U Fallout Cookbook: https://amzn.to/3aGjeod Fallout Boardgame: https://amzn.to/2EgmBq3 The Art of Fallout 4: https://amzn.to/3gfQST3 Get a REAL Nuca-Cola Quantum! https://amzn.to/322O3zG Fallout Funco Pop Figures: https://amzn.to/3gcYsOc Links: Live Shows every Monday Night and game streams: twitch.tv/robotsradio Fallout Hub Podcast w/ Tom & others: https://anchor.fm/the-fallout-hub Talk Fallout and join the Robots Radio fam: Discord: discord.gg/JXKfVhM Stay plugged in on Twitter: twitter.com/falloutlorecast Robots Radio Youtube: youtube.com/c/r0b0ts Send me a note! Email: falloutlorecast@gmail.com www.robotsradio.netOur Sponsors:* Check out Bandai Namco: unknown9.com/FALLOUTLOREAdvertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy",
|
||||
"duration_ms": 2376881,
|
||||
"explicit": false,
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/episode/1bbj9aqeeZ3UMUlcWN0S03"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/episodes/1bbj9aqeeZ3UMUlcWN0S03",
|
||||
"html_description": "<p>Support the show to keep it going, plus get great rewards at patreon.com/falloutlorecast Sponsors: Patreon: Become a patron! https://patreon.com/falloutlorecast Audiobooks.com - Get 3 FREE Audiobooks! https://www.dpbolvw.net/click-100173810-11099382?sid=flore Gamefly - Want 2 months of rentals for the price of 1 at Gamefly? https://www.dpbolvw.net/click-100173810-10495782?sid=flore Loot Crate - 15% off Loot Crate. Click the link and use coupon code: ROBOTSRADIO https://www.dpbolvw.net/click-100173810-13902093?sid=flore GreenMan Gaming - Get awesome discounts on games. https://www.dpbolvw.net/click-100173810-13764551?sid=flore NordVPN - Stay Safe on the Internet and get 68% off. https://www.dpbolvw.net/click-100173810-12814552?sid=flore Buy cool stuff and support the show! Fallout 76: https://amzn.to/3h99B3U Fallout Cookbook: https://amzn.to/3aGjeod Fallout Boardgame: https://amzn.to/2EgmBq3 The Art of Fallout 4: https://amzn.to/3gfQST3 Get a REAL Nuca-Cola Quantum! https://amzn.to/322O3zG Fallout Funco Pop Figures: https://amzn.to/3gcYsOc Links: Live Shows every Monday Night and game streams: twitch.tv/robotsradio Fallout Hub Podcast w/ Tom & others: https://anchor.fm/the-fallout-hub Talk Fallout and join the Robots Radio fam: Discord: discord.gg/JXKfVhM Stay plugged in on Twitter: twitter.com/falloutlorecast Robots Radio Youtube: youtube.com/c/r0b0ts Send me a note! Email: falloutlorecast@gmail.com www.robotsradio.net</p><br /><br />Our Sponsors:<br />* Check out Bandai Namco: unknown9.com/FALLOUTLORE<br /><br /><br />Advertising Inquiries: <a href=\"https://redcircle.com/brands\" rel=\"nofollow\">https://redcircle.com/brands</a><br /><br />Privacy & Opt-Out: <a href=\"https://redcircle.com/privacy\" rel=\"nofollow\">https://redcircle.com/privacy</a>",
|
||||
"id": "1bbj9aqeeZ3UMUlcWN0S03",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab6765630000ba8a655b54a66471089d27dbb03f",
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"height": 300,
|
||||
"url": "https://i.scdn.co/image/ab67656300005f1f655b54a66471089d27dbb03f",
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"height": 64,
|
||||
"url": "https://i.scdn.co/image/ab6765630000f68d655b54a66471089d27dbb03f",
|
||||
"width": 64
|
||||
}
|
||||
],
|
||||
"is_externally_hosted": false,
|
||||
"is_playable": true,
|
||||
"language": "en-US",
|
||||
"languages": ["en-US"],
|
||||
"name": "Who Dropped the First Bomb?",
|
||||
"release_date": "2019-01-15",
|
||||
"release_date_precision": "day",
|
||||
"resume_point": {
|
||||
"fully_played": false,
|
||||
"resume_position_ms": 0
|
||||
},
|
||||
"type": "episode",
|
||||
"uri": "spotify:episode:1bbj9aqeeZ3UMUlcWN0S03"
|
||||
}
|
||||
],
|
||||
"limit": 20,
|
||||
"next": "https://api.spotify.com/v1/shows/0e30iIgSffe6xJhFKe35Db/episodes?offset=20&limit=20&locale=en-US,en;q%3D0.5",
|
||||
"offset": 0,
|
||||
"previous": null,
|
||||
"total": 323
|
||||
}
|
76
tests/components/spotify/fixtures/top_artists.json
Normal file
76
tests/components/spotify/fixtures/top_artists.json
Normal file
@ -0,0 +1,76 @@
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/74Yus6IHfa3tWZzXXAYtS2"
|
||||
},
|
||||
"followers": {
|
||||
"href": null,
|
||||
"total": 488
|
||||
},
|
||||
"genres": [],
|
||||
"href": "https://api.spotify.com/v1/artists/74Yus6IHfa3tWZzXXAYtS2",
|
||||
"id": "74Yus6IHfa3tWZzXXAYtS2",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab6761610000e5ebf749f53f8bb5ffccf6105ce3",
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"height": 320,
|
||||
"url": "https://i.scdn.co/image/ab67616100005174f749f53f8bb5ffccf6105ce3",
|
||||
"width": 320
|
||||
},
|
||||
{
|
||||
"height": 160,
|
||||
"url": "https://i.scdn.co/image/ab6761610000f178f749f53f8bb5ffccf6105ce3",
|
||||
"width": 160
|
||||
}
|
||||
],
|
||||
"name": "Onkruid",
|
||||
"popularity": 7,
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:74Yus6IHfa3tWZzXXAYtS2"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/6s5ubAp65wXoTZefE01RNR"
|
||||
},
|
||||
"followers": {
|
||||
"href": null,
|
||||
"total": 805497
|
||||
},
|
||||
"genres": [],
|
||||
"href": "https://api.spotify.com/v1/artists/6s5ubAp65wXoTZefE01RNR",
|
||||
"id": "6s5ubAp65wXoTZefE01RNR",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab6761610000e5eb8e750249623067fe3c557cf0",
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"height": 320,
|
||||
"url": "https://i.scdn.co/image/ab676161000051748e750249623067fe3c557cf0",
|
||||
"width": 320
|
||||
},
|
||||
{
|
||||
"height": 160,
|
||||
"url": "https://i.scdn.co/image/ab6761610000f1788e750249623067fe3c557cf0",
|
||||
"width": 160
|
||||
}
|
||||
],
|
||||
"name": "Joost",
|
||||
"popularity": 69,
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:6s5ubAp65wXoTZefE01RNR"
|
||||
}
|
||||
],
|
||||
"total": 192,
|
||||
"limit": 20,
|
||||
"offset": 0,
|
||||
"href": "https://api.spotify.com/v1/me/top/artists?locale=en-US,en;q%3D0.5",
|
||||
"next": "https://api.spotify.com/v1/me/top/artists?offset=20&limit=20&locale=en-US,en;q%3D0.5",
|
||||
"previous": null
|
||||
}
|
922
tests/components/spotify/fixtures/top_tracks.json
Normal file
922
tests/components/spotify/fixtures/top_tracks.json
Normal file
@ -0,0 +1,922 @@
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"album": {
|
||||
"album_type": "SINGLE",
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/0PCCGZ0wGLizHt2KZ7hhA2"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/0PCCGZ0wGLizHt2KZ7hhA2",
|
||||
"id": "0PCCGZ0wGLizHt2KZ7hhA2",
|
||||
"name": "Artemas",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:0PCCGZ0wGLizHt2KZ7hhA2"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/album/45Qix7gFNajr6IofEIhhE4"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/albums/45Qix7gFNajr6IofEIhhE4",
|
||||
"id": "45Qix7gFNajr6IofEIhhE4",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab67616d0000b273c88e6a4447087f41eb388b14",
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"height": 300,
|
||||
"url": "https://i.scdn.co/image/ab67616d00001e02c88e6a4447087f41eb388b14",
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"height": 64,
|
||||
"url": "https://i.scdn.co/image/ab67616d00004851c88e6a4447087f41eb388b14",
|
||||
"width": 64
|
||||
}
|
||||
],
|
||||
"name": "i like the way you kiss me (burnt)",
|
||||
"release_date": "2024-03-26",
|
||||
"release_date_precision": "day",
|
||||
"total_tracks": 2,
|
||||
"type": "album",
|
||||
"uri": "spotify:album:45Qix7gFNajr6IofEIhhE4"
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/0PCCGZ0wGLizHt2KZ7hhA2"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/0PCCGZ0wGLizHt2KZ7hhA2",
|
||||
"id": "0PCCGZ0wGLizHt2KZ7hhA2",
|
||||
"name": "Artemas",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:0PCCGZ0wGLizHt2KZ7hhA2"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"PR",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"disc_number": 1,
|
||||
"duration_ms": 142514,
|
||||
"explicit": false,
|
||||
"external_ids": {
|
||||
"isrc": "QZJ842400387"
|
||||
},
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/track/3oRoMXsP2NRzm51lldj1RO"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/tracks/3oRoMXsP2NRzm51lldj1RO",
|
||||
"id": "3oRoMXsP2NRzm51lldj1RO",
|
||||
"is_local": false,
|
||||
"name": "i like the way you kiss me",
|
||||
"popularity": 51,
|
||||
"preview_url": "https://p.scdn.co/mp3-preview/6ce9233edb212fe7cf02273f4369d2c60c28e887?cid=cfe923b2d660439caf2b557b21f31221",
|
||||
"track_number": 2,
|
||||
"type": "track",
|
||||
"uri": "spotify:track:3oRoMXsP2NRzm51lldj1RO"
|
||||
},
|
||||
{
|
||||
"album": {
|
||||
"album_type": "SINGLE",
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/4YLtscXsxbVgi031ovDDdh"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/4YLtscXsxbVgi031ovDDdh",
|
||||
"id": "4YLtscXsxbVgi031ovDDdh",
|
||||
"name": "Chris Stapleton",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:4YLtscXsxbVgi031ovDDdh"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/6M2wZ9GZgrQXHCFfjv46we"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/6M2wZ9GZgrQXHCFfjv46we",
|
||||
"id": "6M2wZ9GZgrQXHCFfjv46we",
|
||||
"name": "Dua Lipa",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:6M2wZ9GZgrQXHCFfjv46we"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/album/3pjMBXbDLg2oGL7HtVxWgY"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/albums/3pjMBXbDLg2oGL7HtVxWgY",
|
||||
"id": "3pjMBXbDLg2oGL7HtVxWgY",
|
||||
"images": [
|
||||
{
|
||||
"height": 640,
|
||||
"url": "https://i.scdn.co/image/ab67616d0000b27386f028311a5a746aa46b412f",
|
||||
"width": 640
|
||||
},
|
||||
{
|
||||
"height": 300,
|
||||
"url": "https://i.scdn.co/image/ab67616d00001e0286f028311a5a746aa46b412f",
|
||||
"width": 300
|
||||
},
|
||||
{
|
||||
"height": 64,
|
||||
"url": "https://i.scdn.co/image/ab67616d0000485186f028311a5a746aa46b412f",
|
||||
"width": 64
|
||||
}
|
||||
],
|
||||
"name": "Think I'm In Love With You (With Dua Lipa) (Live From The 59th ACM Awards)",
|
||||
"release_date": "2024-05-01",
|
||||
"release_date_precision": "day",
|
||||
"total_tracks": 1,
|
||||
"type": "album",
|
||||
"uri": "spotify:album:3pjMBXbDLg2oGL7HtVxWgY"
|
||||
},
|
||||
"artists": [
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/4YLtscXsxbVgi031ovDDdh"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/4YLtscXsxbVgi031ovDDdh",
|
||||
"id": "4YLtscXsxbVgi031ovDDdh",
|
||||
"name": "Chris Stapleton",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:4YLtscXsxbVgi031ovDDdh"
|
||||
},
|
||||
{
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/artist/6M2wZ9GZgrQXHCFfjv46we"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/artists/6M2wZ9GZgrQXHCFfjv46we",
|
||||
"id": "6M2wZ9GZgrQXHCFfjv46we",
|
||||
"name": "Dua Lipa",
|
||||
"type": "artist",
|
||||
"uri": "spotify:artist:6M2wZ9GZgrQXHCFfjv46we"
|
||||
}
|
||||
],
|
||||
"available_markets": [
|
||||
"AR",
|
||||
"AU",
|
||||
"AT",
|
||||
"BE",
|
||||
"BO",
|
||||
"BR",
|
||||
"BG",
|
||||
"CA",
|
||||
"CL",
|
||||
"CO",
|
||||
"CR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"DO",
|
||||
"DE",
|
||||
"EC",
|
||||
"EE",
|
||||
"SV",
|
||||
"FI",
|
||||
"FR",
|
||||
"GR",
|
||||
"GT",
|
||||
"HN",
|
||||
"HK",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LT",
|
||||
"LU",
|
||||
"MY",
|
||||
"MT",
|
||||
"MX",
|
||||
"NL",
|
||||
"NZ",
|
||||
"NI",
|
||||
"NO",
|
||||
"PA",
|
||||
"PY",
|
||||
"PE",
|
||||
"PH",
|
||||
"PL",
|
||||
"PT",
|
||||
"SG",
|
||||
"SK",
|
||||
"ES",
|
||||
"SE",
|
||||
"CH",
|
||||
"TW",
|
||||
"TR",
|
||||
"UY",
|
||||
"US",
|
||||
"GB",
|
||||
"AD",
|
||||
"LI",
|
||||
"MC",
|
||||
"ID",
|
||||
"JP",
|
||||
"TH",
|
||||
"VN",
|
||||
"RO",
|
||||
"IL",
|
||||
"ZA",
|
||||
"SA",
|
||||
"AE",
|
||||
"BH",
|
||||
"QA",
|
||||
"OM",
|
||||
"KW",
|
||||
"EG",
|
||||
"MA",
|
||||
"DZ",
|
||||
"TN",
|
||||
"LB",
|
||||
"JO",
|
||||
"PS",
|
||||
"IN",
|
||||
"KZ",
|
||||
"MD",
|
||||
"UA",
|
||||
"AL",
|
||||
"BA",
|
||||
"HR",
|
||||
"ME",
|
||||
"MK",
|
||||
"RS",
|
||||
"SI",
|
||||
"KR",
|
||||
"BD",
|
||||
"PK",
|
||||
"LK",
|
||||
"GH",
|
||||
"KE",
|
||||
"NG",
|
||||
"TZ",
|
||||
"UG",
|
||||
"AG",
|
||||
"AM",
|
||||
"BS",
|
||||
"BB",
|
||||
"BZ",
|
||||
"BT",
|
||||
"BW",
|
||||
"BF",
|
||||
"CV",
|
||||
"CW",
|
||||
"DM",
|
||||
"FJ",
|
||||
"GM",
|
||||
"GE",
|
||||
"GD",
|
||||
"GW",
|
||||
"GY",
|
||||
"HT",
|
||||
"JM",
|
||||
"KI",
|
||||
"LS",
|
||||
"LR",
|
||||
"MW",
|
||||
"MV",
|
||||
"ML",
|
||||
"MH",
|
||||
"FM",
|
||||
"NA",
|
||||
"NR",
|
||||
"NE",
|
||||
"PW",
|
||||
"PG",
|
||||
"WS",
|
||||
"SM",
|
||||
"ST",
|
||||
"SN",
|
||||
"SC",
|
||||
"SL",
|
||||
"SB",
|
||||
"KN",
|
||||
"LC",
|
||||
"VC",
|
||||
"SR",
|
||||
"TL",
|
||||
"TO",
|
||||
"TT",
|
||||
"TV",
|
||||
"VU",
|
||||
"AZ",
|
||||
"BN",
|
||||
"BI",
|
||||
"KH",
|
||||
"CM",
|
||||
"TD",
|
||||
"KM",
|
||||
"GQ",
|
||||
"SZ",
|
||||
"GA",
|
||||
"GN",
|
||||
"KG",
|
||||
"LA",
|
||||
"MO",
|
||||
"MR",
|
||||
"MN",
|
||||
"NP",
|
||||
"RW",
|
||||
"TG",
|
||||
"UZ",
|
||||
"ZW",
|
||||
"BJ",
|
||||
"MG",
|
||||
"MU",
|
||||
"MZ",
|
||||
"AO",
|
||||
"CI",
|
||||
"DJ",
|
||||
"ZM",
|
||||
"CD",
|
||||
"CG",
|
||||
"IQ",
|
||||
"LY",
|
||||
"TJ",
|
||||
"VE",
|
||||
"ET",
|
||||
"XK"
|
||||
],
|
||||
"disc_number": 1,
|
||||
"duration_ms": 277066,
|
||||
"explicit": false,
|
||||
"external_ids": {
|
||||
"isrc": "USUG12403278"
|
||||
},
|
||||
"external_urls": {
|
||||
"spotify": "https://open.spotify.com/track/69zgu5rlAie3IPZOEXLxyS"
|
||||
},
|
||||
"href": "https://api.spotify.com/v1/tracks/69zgu5rlAie3IPZOEXLxyS",
|
||||
"id": "69zgu5rlAie3IPZOEXLxyS",
|
||||
"is_local": false,
|
||||
"name": "Think I'm In Love With You (With Dua Lipa) (Live From The 59th ACM Awards)",
|
||||
"popularity": 60,
|
||||
"preview_url": "https://p.scdn.co/mp3-preview/c4fa0377538248e0a3c7e92bcf5a58be2f32b342?cid=cfe923b2d660439caf2b557b21f31221",
|
||||
"track_number": 1,
|
||||
"type": "track",
|
||||
"uri": "spotify:track:69zgu5rlAie3IPZOEXLxyS"
|
||||
}
|
||||
],
|
||||
"total": 2951,
|
||||
"limit": 20,
|
||||
"offset": 0,
|
||||
"href": "https://api.spotify.com/v1/me/top/tracks?locale=en-US,en;q%3D0.5",
|
||||
"next": "https://api.spotify.com/v1/me/top/tracks?offset=20&limit=20&locale=en-US,en;q%3D0.5",
|
||||
"previous": null
|
||||
}
|
@ -229,3 +229,593 @@
|
||||
'title': 'Spotify',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[album-spotify:album:3IqzqH6ShrRtie9Yd2ODyG]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:6akJGriy4njdP8fZTPGjwz',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': None,
|
||||
'title': 'All Your Friends',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:7N02bJK1amhplZ8yAapRS5',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': None,
|
||||
'title': 'New Magiks',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:album:3IqzqH6ShrRtie9Yd2ODyG',
|
||||
'media_content_type': 'spotify://album',
|
||||
'not_shown': 0,
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b273a61a28c2f084761f8833bce6',
|
||||
'title': 'SINGLARITY',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[artist-spotify:artist:0TnOYISbd1XYRBk9myaseg]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:album:56jg3KJcYmfL7RzYmG2O1Q',
|
||||
'media_content_type': 'spotify://album',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b273a0bac1996f26274685db1520',
|
||||
'title': 'Trackhouse (Daytona 500 Edition)',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:album:1l86t4bTNT2j1X0ZBCIv6R',
|
||||
'media_content_type': 'spotify://album',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b27333a4ba8f73271a749c5d953d',
|
||||
'title': 'Trackhouse',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_class': <MediaClass.ARTIST: 'artist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:artist:0TnOYISbd1XYRBk9myaseg',
|
||||
'media_content_type': 'spotify://artist',
|
||||
'not_shown': 0,
|
||||
'thumbnail': 'https://i.scdn.co/image/ab6761610000e5ebee07b5820dd91d15d397e29c',
|
||||
'title': 'Pitbull',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[categories-categories]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.PLAYLIST: 'playlist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/0JQ5DAt0tbjZptfcdMSKl3',
|
||||
'media_content_type': 'spotify://category_playlists',
|
||||
'thumbnail': 'https://t.scdn.co/images/728ed47fc1674feb95f7ac20236eb6d7.jpeg',
|
||||
'title': 'Made For You',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.PLAYLIST: 'playlist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/0JQ5DAqbMKFz6FAsUtgAab',
|
||||
'media_content_type': 'spotify://category_playlists',
|
||||
'thumbnail': 'https://t.scdn.co/images/728ed47fc1674feb95f7ac20236eb6d7.jpeg',
|
||||
'title': 'New Releases',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.GENRE: 'genre'>,
|
||||
'media_class': <MediaClass.DIRECTORY: 'directory'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/categories',
|
||||
'media_content_type': 'spotify://categories',
|
||||
'not_shown': 0,
|
||||
'thumbnail': None,
|
||||
'title': 'Categories',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[category_playlists-dinner]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.PLAYLIST: 'playlist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:playlist:37i9dQZF1DX7yhuKT9G4qk',
|
||||
'media_content_type': 'spotify://playlist',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67706f0000000343319faa9428405f3312b588',
|
||||
'title': 'eten met vrienden',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.PLAYLIST: 'playlist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:playlist:37i9dQZF1DXbvE0SE0Cczh',
|
||||
'media_content_type': 'spotify://playlist',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67706f00000003b93c270883619dde61725fc8',
|
||||
'title': 'Jukebox Joint',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.PLAYLIST: 'playlist'>,
|
||||
'media_class': <MediaClass.DIRECTORY: 'directory'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/dinner',
|
||||
'media_content_type': 'spotify://category_playlists',
|
||||
'not_shown': 0,
|
||||
'thumbnail': 'https://t.scdn.co/media/original/dinner_1b6506abba0ba52c54e6d695c8571078_274x274.jpg',
|
||||
'title': 'Cooking & Dining',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[current_user_followed_artists-current_user_followed_artists]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_class': <MediaClass.ARTIST: 'artist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:artist:0lLY20XpZ9yDobkbHI7u1y',
|
||||
'media_content_type': 'spotify://artist',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab6761610000e5eb0fb1220e7e3ace47ebad023e',
|
||||
'title': 'Pegboard Nerds',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_class': <MediaClass.ARTIST: 'artist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:artist:0p4nmQO2msCgU4IF37Wi3j',
|
||||
'media_content_type': 'spotify://artist',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab6761610000e5eb5c3349ddba6b8e064c1bab16',
|
||||
'title': 'Avril Lavigne',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.ARTIST: 'artist'>,
|
||||
'media_class': <MediaClass.DIRECTORY: 'directory'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/current_user_followed_artists',
|
||||
'media_content_type': 'spotify://current_user_followed_artists',
|
||||
'not_shown': 0,
|
||||
'thumbnail': None,
|
||||
'title': 'Artists',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[current_user_playlists-current_user_playlists]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.PLAYLIST: 'playlist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:playlist:4WkWJ0EjHEFASDevhM8oPw',
|
||||
'media_content_type': 'spotify://playlist',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b273d061f5bfae8d38558f3698c1',
|
||||
'title': 'Hyper',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.PLAYLIST: 'playlist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:playlist:1RHirWgH1weMsBLi4KOK9d',
|
||||
'media_content_type': 'spotify://playlist',
|
||||
'thumbnail': 'https://mosaic.scdn.co/640/ab67616d0000b2732f3e58dd611d177973cb3a8cab67616d0000b27345cab965cb4639a4e669564aab67616d0000b2739e83c93811be6abfad8649d6ab67616d0000b273e4c03429788f0aff263a5fc6',
|
||||
'title': 'Ain’t got shit on me',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.PLAYLIST: 'playlist'>,
|
||||
'media_class': <MediaClass.DIRECTORY: 'directory'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/current_user_playlists',
|
||||
'media_content_type': 'spotify://current_user_playlists',
|
||||
'not_shown': 0,
|
||||
'thumbnail': None,
|
||||
'title': 'Playlists',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[current_user_recently_played-current_user_recently_played]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:71dMjqJ8UJV700zYs5YZCh',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b273cdac047e7894fb56a0dfdcde',
|
||||
'title': 'Super Breath',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:71dMjqJ8UJV700zYs5YZCh',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b273cdac047e7894fb56a0dfdcde',
|
||||
'title': 'Super Breath',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.DIRECTORY: 'directory'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/current_user_recently_played',
|
||||
'media_content_type': 'spotify://current_user_recently_played',
|
||||
'not_shown': 0,
|
||||
'thumbnail': None,
|
||||
'title': 'Recently played',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[current_user_saved_albums-current_user_saved_albums]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:album:57MSBg5pBQZH5bfLVDmeuP',
|
||||
'media_content_type': 'spotify://album',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b2733126a95bb7ed4146a80c7fc6',
|
||||
'title': 'In Waves',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:album:3DQueEd1Ft9PHWgovDzPKh',
|
||||
'media_content_type': 'spotify://album',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b2736b8a4828e057b7dc1c4a4d39',
|
||||
'title': 'ten days',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_class': <MediaClass.DIRECTORY: 'directory'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/current_user_saved_albums',
|
||||
'media_content_type': 'spotify://current_user_saved_albums',
|
||||
'not_shown': 0,
|
||||
'thumbnail': None,
|
||||
'title': 'Albums',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[current_user_saved_shows-current_user_saved_shows]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.EPISODE: 'episode'>,
|
||||
'media_class': <MediaClass.PODCAST: 'podcast'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:show:5OzkclFjD6iAjtAuo7aIYt',
|
||||
'media_content_type': 'spotify://show',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab6765630000f68db5f65a943ef4f707bf79949b',
|
||||
'title': 'Toni and Ryan',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.EPISODE: 'episode'>,
|
||||
'media_class': <MediaClass.PODCAST: 'podcast'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:show:6XYRres0KZtnTqKcLavWR2',
|
||||
'media_content_type': 'spotify://show',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab6765630000f68d5fccb05c5685c081d5c2ad9c',
|
||||
'title': 'BLAST Push To Talk',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.PODCAST: 'podcast'>,
|
||||
'media_class': <MediaClass.DIRECTORY: 'directory'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/current_user_saved_shows',
|
||||
'media_content_type': 'spotify://current_user_saved_shows',
|
||||
'not_shown': 0,
|
||||
'thumbnail': None,
|
||||
'title': 'Podcasts',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[current_user_saved_tracks-current_user_saved_tracks]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:2pj2A25YQK4uMxhZheNx7R',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b273ac9dd449e38e5e8952fd22ad',
|
||||
'title': 'Otherside',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:2lKOI1nwP5qZtZC7TGQVY8',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b2733d710ab088ff797e80cc5aed',
|
||||
'title': 'I Think I Need A DJ',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.DIRECTORY: 'directory'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/current_user_saved_tracks',
|
||||
'media_content_type': 'spotify://current_user_saved_tracks',
|
||||
'not_shown': 0,
|
||||
'thumbnail': None,
|
||||
'title': 'Tracks',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[current_user_top_artists-current_user_top_artists]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_class': <MediaClass.ARTIST: 'artist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:artist:74Yus6IHfa3tWZzXXAYtS2',
|
||||
'media_content_type': 'spotify://artist',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab6761610000e5ebf749f53f8bb5ffccf6105ce3',
|
||||
'title': 'Onkruid',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_class': <MediaClass.ARTIST: 'artist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:artist:6s5ubAp65wXoTZefE01RNR',
|
||||
'media_content_type': 'spotify://artist',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab6761610000e5eb8e750249623067fe3c557cf0',
|
||||
'title': 'Joost',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.ARTIST: 'artist'>,
|
||||
'media_class': <MediaClass.DIRECTORY: 'directory'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/current_user_top_artists',
|
||||
'media_content_type': 'spotify://current_user_top_artists',
|
||||
'not_shown': 0,
|
||||
'thumbnail': None,
|
||||
'title': 'Top Artists',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[current_user_top_tracks-current_user_top_tracks]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:3oRoMXsP2NRzm51lldj1RO',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b273c88e6a4447087f41eb388b14',
|
||||
'title': 'i like the way you kiss me',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:69zgu5rlAie3IPZOEXLxyS',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b27386f028311a5a746aa46b412f',
|
||||
'title': "Think I'm In Love With You (With Dua Lipa) (Live From The 59th ACM Awards)",
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.DIRECTORY: 'directory'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/current_user_top_tracks',
|
||||
'media_content_type': 'spotify://current_user_top_tracks',
|
||||
'not_shown': 0,
|
||||
'thumbnail': None,
|
||||
'title': 'Top Tracks',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[featured_playlists-featured_playlists]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.PLAYLIST: 'playlist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:playlist:37i9dQZF1DX4dopZ9vOp1t',
|
||||
'media_content_type': 'spotify://playlist',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67706f000000037d14c267b8ee5fea2246a8fe',
|
||||
'title': 'Kerst Hits 2023',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.PLAYLIST: 'playlist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:playlist:37i9dQZF1DWSBi5svWQ9Nk',
|
||||
'media_content_type': 'spotify://playlist',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67706f00000003f7b99051789611a49101c1cf',
|
||||
'title': 'Top Hits NL',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.PLAYLIST: 'playlist'>,
|
||||
'media_class': <MediaClass.DIRECTORY: 'directory'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/featured_playlists',
|
||||
'media_content_type': 'spotify://featured_playlists',
|
||||
'not_shown': 0,
|
||||
'thumbnail': None,
|
||||
'title': 'Featured Playlists',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[new_releases-new_releases]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': False,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:album:5SGtrmYbIo0Dsg4kJ4qjM6',
|
||||
'media_content_type': 'spotify://album',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d00001e0209ba52a5116e0c3e8461f58b',
|
||||
'title': 'Moon Music',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:album:713lZ7AF55fEFSQgcttj9y',
|
||||
'media_content_type': 'spotify://album',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d00001e02ab9953b1d18f8233f6b26027',
|
||||
'title': 'drift',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.ALBUM: 'album'>,
|
||||
'media_class': <MediaClass.DIRECTORY: 'directory'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/new_releases',
|
||||
'media_content_type': 'spotify://new_releases',
|
||||
'not_shown': 0,
|
||||
'thumbnail': None,
|
||||
'title': 'New Releases',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[playlist-spotify:playlist:3cEYpjA9oz9GiPac4AsH4n]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:4rzfv0JLZfVhOhbSQ8o5jZ',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b273ce6d0eef0c1ce77e5f95bbbc',
|
||||
'title': 'Api',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:5o3jMYOSbaVz3tkgwhELSV',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b273aa2ff29970d9a63a49dfaeb2',
|
||||
'title': 'Is',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:4Cy0NHJ8Gh0xMdwyM9RkQm',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b273ee0d0dce888c6c8a70db6e8b',
|
||||
'title': 'All I Want',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:6hvFrZNocdt2FcKGCSY5NI',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b2738b7447ac3daa1da18811cf7b',
|
||||
'title': 'Endpoints',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:track:2E2znCPaS8anQe21GLxcvJ',
|
||||
'media_content_type': 'spotify://track',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67616d0000b27304e57d181ff062f8339d6c71',
|
||||
'title': 'You Are So Beautiful',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.TRACK: 'track'>,
|
||||
'media_class': <MediaClass.PLAYLIST: 'playlist'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:playlist:3cEYpjA9oz9GiPac4AsH4n',
|
||||
'media_content_type': 'spotify://playlist',
|
||||
'not_shown': 0,
|
||||
'thumbnail': 'https://i.scdn.co/image/ab67706c0000da848d0ce13d55f634e290f744ba',
|
||||
'title': 'Spotify Web API Testing playlist',
|
||||
})
|
||||
# ---
|
||||
# name: test_browsing[show-spotify:show:1Y9ExMgMxoBVrgrfU7u0nD]
|
||||
dict({
|
||||
'can_expand': True,
|
||||
'can_play': True,
|
||||
'children': list([
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.EPISODE: 'episode'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:episode:3ssmxnilHYaKhwRWoBGMbU',
|
||||
'media_content_type': 'spotify://episode',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab6765630000ba8af44e9ef63c2d6fb44cb0c9bf',
|
||||
'title': 'The Great War - Fallout Lorecast EP 1',
|
||||
}),
|
||||
dict({
|
||||
'can_expand': False,
|
||||
'can_play': True,
|
||||
'children_media_class': None,
|
||||
'media_class': <MediaClass.EPISODE: 'episode'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:episode:1bbj9aqeeZ3UMUlcWN0S03',
|
||||
'media_content_type': 'spotify://episode',
|
||||
'thumbnail': 'https://i.scdn.co/image/ab6765630000ba8a655b54a66471089d27dbb03f',
|
||||
'title': 'Who Dropped the First Bomb?',
|
||||
}),
|
||||
]),
|
||||
'children_media_class': <MediaClass.EPISODE: 'episode'>,
|
||||
'media_class': <MediaClass.PODCAST: 'podcast'>,
|
||||
'media_content_id': 'spotify://01j5tx5a0ff6g5v0qjx6hbc94t/spotify:show:1Y9ExMgMxoBVrgrfU7u0nD',
|
||||
'media_content_type': 'spotify://show',
|
||||
'not_shown': 0,
|
||||
'thumbnail': 'https://i.scdn.co/image/ab6765630000ba8ac7bedd27a4413b1abf926d8a',
|
||||
'title': 'Safety Third',
|
||||
})
|
||||
# ---
|
||||
|
@ -98,3 +98,43 @@ async def test_browse_media_playlists(
|
||||
f"spotify://{config_entry_id}/current_user_playlists",
|
||||
)
|
||||
assert response.as_dict() == snapshot
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("media_content_type", "media_content_id"),
|
||||
[
|
||||
("current_user_playlists", "current_user_playlists"),
|
||||
("current_user_followed_artists", "current_user_followed_artists"),
|
||||
("current_user_saved_albums", "current_user_saved_albums"),
|
||||
("current_user_saved_tracks", "current_user_saved_tracks"),
|
||||
("current_user_saved_shows", "current_user_saved_shows"),
|
||||
("current_user_recently_played", "current_user_recently_played"),
|
||||
("current_user_top_artists", "current_user_top_artists"),
|
||||
("current_user_top_tracks", "current_user_top_tracks"),
|
||||
("featured_playlists", "featured_playlists"),
|
||||
("categories", "categories"),
|
||||
("category_playlists", "dinner"),
|
||||
("new_releases", "new_releases"),
|
||||
("playlist", "spotify:playlist:3cEYpjA9oz9GiPac4AsH4n"),
|
||||
("album", "spotify:album:3IqzqH6ShrRtie9Yd2ODyG"),
|
||||
("artist", "spotify:artist:0TnOYISbd1XYRBk9myaseg"),
|
||||
("show", "spotify:show:1Y9ExMgMxoBVrgrfU7u0nD"),
|
||||
],
|
||||
)
|
||||
@pytest.mark.usefixtures("setup_credentials")
|
||||
async def test_browsing(
|
||||
hass: HomeAssistant,
|
||||
mock_spotify: MagicMock,
|
||||
snapshot: SnapshotAssertion,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
media_content_type: str,
|
||||
media_content_id: str,
|
||||
) -> None:
|
||||
"""Test browsing playlists for the two config entries."""
|
||||
await setup_integration(hass, mock_config_entry)
|
||||
response = await async_browse_media(
|
||||
hass,
|
||||
f"spotify://{media_content_type}",
|
||||
f"spotify://{mock_config_entry.entry_id}/{media_content_id}",
|
||||
)
|
||||
assert response.as_dict() == snapshot
|
||||
|
Loading…
x
Reference in New Issue
Block a user