python - 使用 Spotipy 将轨道添加到 Spotify 中的播放列表

标签 python spotify spotipy

我正在使用 Spotify API 的 Python 绑定(bind)来列出艺术家的热门轨道并将它们添加到播放列表,但每次都失败,就好像它除了不同类型的输入一样。

New_Track_List 是一个包含热门轨道查找输出的字符串:

1:URI:

示例:“spotify:track:1pAyyxlkPuGnENdj4g7Y4f, spotify:track:7D2xaUXQ4DGY5JJAdM5mGP, spotify:track:74mG2xIxEUJwHckS0Co6jF, spotify:track:2rjqDPbLlbQRlcj8DVM9kn,”

我使用 URI 从函数中取回它

sp.user_playlist_add_tracks(username, playlist_id=playlist, tracks=New_Track_List)

回溯:

spotipy.client.SpotifyException: http status: 400, code:-1 - https://api.spotify.com/v1/users/smokieprofile/playlists/40aijTeKoxo5u1VSS9E3UQ/tracks: You can add a maximum of 100 tracks per request.

字符串中只有 20 首轨道。

第二次尝试:轨道 ID:

示例:“1pAyyxlkPuGnENdj4g7Y4f,7D2xaUXQ4DGY5JJAdM5mGP,74mG2xIxEUJwHckS0Co6jF,2rjqDPbLlbQRlcj8DVM9kn”

相同的回溯输出。

使用单个轨道 ID

sp.user_playlist_add_tracks(username, playlist_id=playlist, tracks="spotify:track:74mG2xIxEUJwHckS0Co6jF")

尝试只添加一首轨道时,收到此消息:

spotipy.client.SpotifyException: http status: 400, code:-1 - https://api.spotify.com/v1/users/smokieprofile/playlists/40aijTeKoxo5u1VSS9E3UQ/tracks: Invalid track uri: spotify:track:s

仅使用轨道 ID 的同一消息,就好像它只检查传递的字符串的第一个字母。

    sp.user_playlist_add_tracks(username, playlist_id=playlist, tracks="7D2xaUXQ4DGY5JJAdM5mGP")

错误回溯:

spotipy.client.SpotifyException: http status: 400, code:-1 - https://api.spotify.com/v1/users/smokieprofile/playlists/40aijTeKoxo5u1VSS9E3UQ/tracks: Invalid track uri: spotify:track:7

最佳答案

这看起来像是在 python 中输入鸭子和 api 中错误消息的问题。我猜想 api 要求您发送一个列表而不是一个字符串,但实际上并没有检查它。问题是字符串也是可迭代的。

>>> tracks = "spotify:track:1pAyyxlkPuGnENdj4g7Y4f, spotify:track:7D2xaUXQ4DGY5JJAdM5mGP, spotify:track:74mG2xIxEUJwHckS0Co6jF, spotify:track:2rjqDPbLlbQRlcj8DVM9kn"
>>> len(tracks)
150

并且该 api 实际上采用了一个轨道 ID 列表(不是一串以逗号分隔的轨道 URI)并在所有 ID 前面加上“spotify:track:”:

>>> tracks = "spotify:track:74mG2xIxEUJwHckS0Co6jF"
>>> ["spotify:track:" + track for track in tracks][0]
'spotify:track:s'

因此,如果您改为给 api 一个轨道 ID 列表,它可能会起作用:

>>> tracks = ["1pAyyxlkPuGnENdj4g7Y4f", "7D2xaUXQ4DGY5JJAdM5mGP"]
>>> ["spotify:track:" + track for track in tracks][0]
'spotify:track:1pAyyxlkPuGnENdj4g7Y4f'

关于python - 使用 Spotipy 将轨道添加到 Spotify 中的播放列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39139688/

相关文章:

python - 如何在 Python Spotify API 中更改用户?

python - Google Colab - Spotipy 没有将我重定向到指定的redirect_uri

python - 在 AWS 上使用 Spotipy 通过 Python 对 Spotify 进行用户身份验证

Python/ Selenium - "no such element: Unable to locate element"

python - 如何在 SQLAlchemy 中创建自定义 filter_by

authentication - 无法使用 sp_session_relogin (libspotify)

ios - Spotify ios SDK 登录 : Invalid Redirect URI

python - 用正确的方法包装Pyro的NameServer

python - 使用带有参数的 Pandas groupby() + apply()

spotify - Spotipy:如何同时按艺术家和歌曲进行搜索