This commit is contained in:
Niko 2026-02-16 20:31:33 +01:00 committed by GitHub
commit 086858d120
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -400,14 +400,10 @@ class Spotify:
return self._get("artists/?ids=" + ",".join(tlist)) return self._get("artists/?ids=" + ",".join(tlist))
def artist_albums( def artist_albums(
self, artist_id, album_type=None, include_groups=None, country=None, limit=20, offset=0 self, artist_id, album_type=None, include_groups=None, market=None, limit=20, offset=0
): ):
""" Get Spotify catalog information about an artist's albums """ Get Spotify catalog information about an artist's albums
.. deprecated::
This method is deprecated and may be removed in a future version. Use
`artist_albums(..., include_groups='...')` instead.
Parameters: Parameters:
- artist_id - the artist ID, URI or URL - artist_id - the artist ID, URI or URL
- include_groups - the types of items to return. One or more of 'album', 'single', - include_groups - the types of items to return. One or more of 'album', 'single',
@ -431,12 +427,12 @@ class Spotify:
return self._get( return self._get(
"artists/" + trid + "/albums", "artists/" + trid + "/albums",
include_groups=include_groups, include_groups=include_groups,
country=country, market=market,
limit=limit, limit=limit,
offset=offset, offset=offset,
) )
def artist_top_tracks(self, artist_id, country="US"): def artist_top_tracks(self, artist_id, market="US"):
""" Get Spotify catalog information about an artist's top 10 tracks """ Get Spotify catalog information about an artist's top 10 tracks
by country. by country.
@ -446,7 +442,7 @@ class Spotify:
""" """
trid = self._get_id("artist", artist_id) trid = self._get_id("artist", artist_id)
return self._get("artists/" + trid + "/top-tracks", country=country) return self._get("artists/" + trid + "/top-tracks", market=market)
def artist_related_artists(self, artist_id): def artist_related_artists(self, artist_id):
""" Get Spotify catalog information about artists similar to an """ Get Spotify catalog information about artists similar to an
@ -590,7 +586,13 @@ class Spotify:
tlist = [self._get_id("episode", e) for e in episodes] tlist = [self._get_id("episode", e) for e in episodes]
return self._get("episodes/?ids=" + ",".join(tlist), market=market) return self._get("episodes/?ids=" + ",".join(tlist), market=market)
def search(self, q, limit=10, offset=0, type="track", market=None): def search(self,
q,
limit=10,
offset=0,
type="track",
market=None,
include_external_audio=False):
""" searches for an item """ searches for an item
Parameters: Parameters:
@ -604,7 +606,18 @@ class Spotify:
pass in a comma separated string; e.g., 'track,album,episode'. pass in a comma separated string; e.g., 'track,album,episode'.
- market - An ISO 3166-1 alpha-2 country code or the string - market - An ISO 3166-1 alpha-2 country code or the string
from_token. from_token.
- include_external_audo - if true, the response will include any relevant
audio content that is hosted externally.
""" """
if include_external_audio:
return self._get("search",
q=q,
limit=limit,
offset=offset,
type=type,
market=market,
include_external="audio",
)
return self._get( return self._get(
"search", q=q, limit=limit, offset=offset, type=type, market=market "search", q=q, limit=limit, offset=offset, type=type, market=market
) )
@ -712,7 +725,7 @@ class Spotify:
self, self,
playlist_id, playlist_id,
fields=None, fields=None,
limit=100, limit=50,
offset=0, offset=0,
market=None, market=None,
additional_types=("track", "episode") additional_types=("track", "episode")
@ -1177,6 +1190,7 @@ class Spotify:
) )
def playlist_replace_items(self, playlist_id, items): def playlist_replace_items(self, playlist_id, items):
# TODO: find out where the docs for this endpoint are
""" Replace all tracks/episodes in a playlist """ Replace all tracks/episodes in a playlist
Parameters: Parameters:
@ -1198,6 +1212,7 @@ class Spotify:
range_length=1, range_length=1,
snapshot_id=None, snapshot_id=None,
): ):
# TODO: find out if it still works
""" Reorder tracks in a playlist """ Reorder tracks in a playlist
Parameters: Parameters:
@ -1234,6 +1249,7 @@ class Spotify:
""" """
plid = self._get_id("playlist", playlist_id) plid = self._get_id("playlist", playlist_id)
# TODO: aren't episodes also a possible uri type?
ftracks = [self._get_uri("track", tid) for tid in items] ftracks = [self._get_uri("track", tid) for tid in items]
payload = {"tracks": [{"uri": track} for track in ftracks]} payload = {"tracks": [{"uri": track} for track in ftracks]}
if snapshot_id: if snapshot_id:
@ -1245,6 +1261,7 @@ class Spotify:
def playlist_remove_specific_occurrences_of_items( def playlist_remove_specific_occurrences_of_items(
self, playlist_id, items, snapshot_id=None self, playlist_id, items, snapshot_id=None
): ):
# TODO: find out if it still works
""" Removes all occurrences of the given tracks from the given playlist """ Removes all occurrences of the given tracks from the given playlist
Parameters: Parameters:
@ -1287,7 +1304,7 @@ class Spotify:
) )
def playlist_is_following( def playlist_is_following(
self, playlist_id, user_ids self, playlist_id, user_ids=None
): ):
""" """
Check to see if the given users are following the given playlist Check to see if the given users are following the given playlist
@ -1295,10 +1312,18 @@ class Spotify:
Parameters: Parameters:
- playlist_id - the id of the playlist - playlist_id - the id of the playlist
- user_ids - the ids of the users that you want to check to see - user_ids - the ids of the users that you want to check to see
if they follow the playlist. Maximum: 5 ids. if they follow the playlist. Maximum: 1 ID.
""" """
endpoint = f"playlists/{playlist_id}/followers/contains?ids={','.join(user_ids)}" endpoint = f"playlists/{playlist_id}/followers/contains"
if user_ids:
warnings.warn(
"You're using `playlist_is_following(..., user_ids='...')` "
"which will be removed in future versions. "
"Please adjust your code accordingly by not using the argument `user_ids`.",
DeprecationWarning,
)
return self._get(endpoint, ids=",".join(user_ids))
return self._get(endpoint) return self._get(endpoint)
def me(self): def me(self):
@ -1672,8 +1697,6 @@ class Spotify:
""" Get a list of new album releases featured in Spotify """ Get a list of new album releases featured in Spotify
Parameters: Parameters:
- country - An ISO 3166-1 alpha-2 country code.
- limit - The maximum number of items to return. Default: 20. - limit - The maximum number of items to return. Default: 20.
Minimum: 1. Maximum: 50 Minimum: 1. Maximum: 50
@ -1681,8 +1704,14 @@ class Spotify:
(the first object). Use with limit to get the next set of (the first object). Use with limit to get the next set of
items. items.
""" """
if country:
warnings.warn(
"You're using `new_releases(..., country=...)`, "
"which was removed by Spotify and thus will be ignored.",
DeprecationWarning,
)
return self._get( return self._get(
"browse/new-releases", country=country, limit=limit, offset=offset "browse/new-releases", limit=limit, offset=offset
) )
def category(self, category_id, country=None, locale=None): def category(self, category_id, country=None, locale=None):
@ -1696,9 +1725,14 @@ class Spotify:
language code and an ISO 3166-1 alpha-2 country code, joined language code and an ISO 3166-1 alpha-2 country code, joined
by an underscore. by an underscore.
""" """
if country:
warnings.warn(
"You're using `new_releases(..., country=...)`, "
"which was removed by Spotify and thus will be ignored.",
DeprecationWarning,
)
return self._get( return self._get(
"browse/categories/" + category_id, "browse/categories/" + category_id,
country=country,
locale=locale, locale=locale,
) )
@ -1718,9 +1752,14 @@ class Spotify:
(the first object). Use with limit to get the next set of (the first object). Use with limit to get the next set of
items. items.
""" """
if country:
warnings.warn(
"You're using `new_releases(..., country=...)`, "
"which was removed by Spotify and thus will be ignored.",
DeprecationWarning,
)
return self._get( return self._get(
"browse/categories", "browse/categories",
country=country,
locale=locale, locale=locale,
limit=limit, limit=limit,
offset=offset, offset=offset,
@ -1751,9 +1790,14 @@ class Spotify:
"which is marked as deprecated by Spotify.", "which is marked as deprecated by Spotify.",
DeprecationWarning, DeprecationWarning,
) )
if country:
warnings.warn(
"You're using `new_releases(..., country=...)`, "
"which was removed by Spotify and thus will be ignored.",
DeprecationWarning,
)
return self._get( return self._get(
"browse/categories/" + category_id + "/playlists", "browse/categories/" + category_id + "/playlists",
country=country,
limit=limit, limit=limit,
offset=offset, offset=offset,
) )