python - 使用 Spotipy 将曲目添加到播放列表时出现多个错误
问题描述
我正在尝试将曲目添加到我的 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,但是对于我列表中的每个轨道,我通过在 Spotify 中搜索 uri 进行了测试,它确实是有效的。
我尝试无济于事的解决方案:
1. 在播放列表和曲目列表的 ID 和 URI 之间进行更改
2. 使用 OAuth 进行身份验证
3. 使用不同的播放列表和曲目
4. 使用不同的 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
将不胜感激任何帮助!谢谢
解决方案
轨道 URI 不应包含?si=
但仅包含之前的内容。请参阅https://developer.spotify.com/documentation/web-api/#spotify-uris-and-ids
您可以修复代码以仅保留第一部分:
track_uris = [uri.split("?si=")[0] for uri in track_uris]
推荐阅读
- google-cloud-platform - Google Cloud Platform 的 Cloud-init 脚本
- angular - Angular 通用仅适用于特定模块
- ffmpeg - 将淡化文本与重新编码视频相结合
- python - 从 xero-python-oauth2-starter-master 安装依赖项时“git@github.com: Permission denied (publickey)”
- python - 部署云功能时的问题
- css - Safari 的扭曲 css 顶部
- three.js - Threejs 使用视口和剪刀“查看裁剪”
- telegram - 如何使用 Telegram Bot 在消息中发送 url 链接或显示按钮以打开 URL 链接
- javascript - 如何为graphql创建对象数组
- mysql - 使用条件代码点火器选择数据