【问题标题】:Adding tracks to a playlist in Spotify using Spotipy使用 Spotipy 将曲目添加到 Spotify 中的播放列表
【发布时间】:2017-01-01 13:20:17
【问题描述】:

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

New_Track_List 是一个字符串,其中包含顶部曲目查找的输出:

1:URI:

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

使用 URIs 我从函数中得到它

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

仅使用 Track 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 spotify spotipy


    【解决方案1】:

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

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

    并且该 api 实际上需要一个轨道 id 列表(不是逗号分隔的轨道 uris 字符串)并在所有 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'
    

    【讨论】:

    • 嘿伙计,非常感谢,原来如此。如果不指定它,Spotipy 绑定需要一个列表而不是字符串。现在一切都很好。谢谢!
    猜你喜欢
    • 2012-12-20
    • 2017-06-16
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    相关资源
    最近更新 更多