400:尝试从Spotify播放列表中删除曲目时出现“丢失曲目”错误

时间:2017-08-27 14:20:10

标签: python python-requests spotify

我正在尝试从我创建的测试播放列表中删除曲目。它是播放列表中的第三首曲目(即索引2),Spotify ID为3PqvdKpjaxab0mWns1laKo。我这样做的代码如下:

method = "delete"
url = "https://api.spotify.com/v1/users/"+username+"/playlists/6bhZt1Uia5pfmeL5OYDJZM/tracks"
headers = {
    'Authorization':  'Bearer ' + TOKEN, 
    'Content-Type': 'application/json', 
    'Accept': 'application/json'
}
params = {
    "tracks": [
        {
            "positions": [2],
            "uri": "spotify:track:3PqvdKpjaxab0mWns1laKo"
        }
    ]
}
response = requests.request(method, url=url, headers=headers, params=params)

但是,当我运行代码时,不会删除该轨道,并返回以下错误消息:{'error': {'message': 'Missing tracks', 'status': 400}}

另一方面,如果我在web api或使用curl(如下所示)中尝试完全相同的请求,则可以成功运行。

curl -X DELETE "https://api.spotify.com/v1/users/USERNAME/playlists/6bhZt1Uia5pfmeL5OYDJZM/tracks" -H "Accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" --data "{\"tracks\":[{\"positions\":[2],\"uri\":\"spotify:track:3PqvdKpjaxab0mWns1laKo\"}]}"

有关我做错的任何建议吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:数据作为数据传递到端点,而不是参数。换句话说,将最后一行更改为

response = requests.request(method, url=url, headers=headers, data=json.dumps(params))

解决了这个问题。