Как удалить треки из Spotify с помощью Python - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь удалить песню из плейлиста spotify с помощью API Spotify, и она, похоже, не работает. Ниже приведен фрагмент моего кода

headers = {'Accept': 'application/json',
           'Authorization' :'Bearer '+access,
          'Content-Type': 'application/json'}
params={"tracks":
                {"uri":
                       ["spotify:track:2goLsvvODILDzeeiT4dAoR"]
                }
       }
remove=requests.delete("https://api.spotify.com/v1/playlists/55J330mslu8XwOUXef77Qw/tracks",headers=headers,params=params)

Я получаю 404 ошибку с print(remove.json()), давая {'error': {'status': 400, 'message': 'Missing tracks'}}

и print(remove.url) дают https://api.spotify.com/v1/playlists/55J330mslu8XwOUXef77Qw/tracks?tracks=uri, который по некоторым причинам кажется неполным.

Кажется, что конечная точка удаления работает со своей консоли онлайн-тестирования, но они используют curl и им пришлось экранировать кавычки в массиве params. Я попытался избежать кавычек в Python, и я получаю ошибку SyntaxError: unexpected character after line continuation character.

Ниже приведен пример, который работает, но он из примеров Spotify, которые работают с curl

curl -X "DELETE" "https://api.spotify.com/v1/playlists//tracks" --data "{\"tracks\":[{\"uri\":\"spotify:track:2DB2zVP1LVu6jjyrvqD44z\",\"positions\":[0]},{\"uri\":\"spotify:track:5ejwTEOCsaDEjvhZTcU6lg\",\"positions\":[1]}]}" -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer BQDqsVD6LMUcgDXfe8F0gupyYlqjRbIqjuJKfzfoUBL5DvA22YS2tp0-ksyFmI0YDCHgc0WZN664vNc5ZwMjm3xvJV--BiTnwn7Oki6IDIRXeWjQsIK8iNkd8PASuY4zBUxk37F2aZv29_Kg23cvNmCi5aABb5gVO2OjpjQhGwMr16Clie4qymoYoXH7PB9J3-ShZ8DzWG1y5r0GETwgi9Jj0q3A3B7KY3Xw6VnERIfQSXRw8SdkpdSpSMfPKBt4utCPXIOt2198Kw"

Есть ли способ заставить это работать?

1 Ответ

0 голосов
/ 05 мая 2019

Только что это заработало. Для тех, у кого есть проблемы с переводом curl в код Python, есть этот сайт конверсии https://curl.trillworks.com

Мой код закончился следующим образом, и теперь все работает:

params='{"tracks":[{"uri":"spotify:track:1snNAXmmPXCn0dkF9DaPWw"}]}'

remove=requests.delete("https://api.spotify.com/v1/playlists/55J330mslu8XwOUXef77Qw/tracks",headers=headers,data=params)
...