Множественные ошибки при добавлении треков в плейлист с помощью Spotipy - PullRequest
1 голос
/ 30 мая 2020

Я пытаюсь добавить треки в один из моих плейлистов Spotify, и я почти уверен, что у меня весь код в точности соответствует описанию в документации Spotipy:

username = '*myusername*'
scope = 'playlist-modify-public'

playlist_id = '*myplaylistid*'
track_ids = *array of track ids*

token = util.prompt_for_user_token(username,
                           scope,
                           client_id='*myclientid*',
                           client_secret='*mysecretclientid*',
                           redirect_uri='http://localhost:8888/callback/')
spotify = spotipy.Spotify(auth=token)

results = spotify.user_playlist_add_tracks(username, playlist_id, track_ids)

Однако это следующие ошибки две ошибки, которые я получаю независимо от того, что я пытаюсь:

HTTPError: 400 Client Error: Bad Request for url: https://api.spotify.com/v1/users/*myusername*/playlists/*myplaylist*/tracks

During handling of the above exception, another exception occurred:

SpotifyException: http status: 400, code:-1 - https://api.spotify.com/v1/users/*myusername*/playlists/*myplaylist*/tracks:
 Invalid track uri: spotify:track:*trackid*

Он указывает недопустимый uri дорожки, однако для каждой дорожки в моем списке я проверил, выполнив поиск uri в Spotify, и это действительно действительный.

Решения, которые я пытался безрезультатно:
1. Переключение между ID и URI для списков воспроизведения и списка треков
2. Проверка подлинности с использованием OAuth
3. Использование разных списков воспроизведения и треков
4. Использование различных URL-адресов redirect_uri

5 примеров URI треков для справки:

spotify:track:1rdHsnsGmleo6MRctkkFmm?si=7R0IKQ9xTgiwfLAJO7eFCw
spotify:track:70CMnzQ3FjMmUk5NPdQJBe?si=qL_WwgWVRTaSZ2oOBg2eCA
spotify:track:6bbx7nYlixYuElKMbYCzMm?si=Wu64S-obRaOOh3mFP3zWwA
spotify:track:6DZNQKNUskiWVSXs3cQPk3?si=SIW3hBU1SiWd_h1gpXwijg
spotify:track:2FMPIU8FdP9kCi5kUCSGnE?si=jtJOkQhsSF6GoD3otgtV3A

Буду признателен за любую помощь !! Спасибо

1 Ответ

1 голос
/ 01 июня 2020

URI дорожек не должны содержать ?si=, а должны содержать только то, что перед этим. См. https://developer.spotify.com/documentation/web-api/#spotify -uris-and-ids

Вы можете исправить свой код, чтобы сохранить только первую часть:

track_uris = [uri.split("?si=")[0] for uri in track_uris]
...