无法向Spotify播放列表添加曲目:403权限错误排查求助
解决Spotify播放列表添加曲目403错误问题
错误原因分析
HTTP 403错误明确提示您无法向非本人所有的播放列表添加曲目,说明代码中使用的playlist_id对应的播放列表不属于当前授权的Spotify账号,或者账号没有该播放列表的修改权限。
解决方案
- 确认播放列表归属权:检查
playlist_id对应的播放列表是否由当前授权账号创建;若为他人的公开播放列表,需对方授予协作权限才能修改。 - 确保创建播放列表时使用当前账号:如果是动态创建播放列表,调用
user_playlist_create时必须传入当前授权用户的ID(即代码中的username变量),这样生成的播放列表才属于你,拥有完整修改权限。 - 验证权限授权状态:你的scope已包含
playlist-modify-public和playlist-modify-private,但需确保用户授权时同意了这些权限。可删除缓存文件(.cache-+username)重新授权,确认弹窗中修改播放列表的选项已勾选。
修正后的代码示例
def add_artist_songs_to_playlist(): sp_oauth = SpotifyOAuth(client_id, client_secret, redirect_uri, scope="app-remote-control user-library-read user-read-playback-state user-read-private user-read-email playlist-read-private playlist-modify-public playlist-modify-private", cache_path=".cache-" + username) spotify_api = spotipy.Spotify(auth_manager=sp_oauth) artist_name, artist_id = get_artist_info() # 自定义播放列表名称 playlist_name = f"{artist_name} 全曲目合集" playlist_id = None # 查找当前用户是否已有目标播放列表 playlists = spotify_api.current_user_playlists() for item in playlists['items']: if item['name'] == playlist_name: playlist_id = item['id'] break # 不存在则创建当前用户的私有播放列表 if not playlist_id: playlist = spotify_api.user_playlist_create(user=username, name=playlist_name, public=False) playlist_id = playlist['id'] try: songs = [] offset = 0 while True: result = spotify_api.artist_albums(artist_id, offset=offset) albums = result['items'] if not albums: break for album in albums: album_tracks = spotify_api.album_tracks(album['id']) for track in album_tracks['items']: songs.append(track['id']) offset += 20 # 分批次添加曲目(Spotify API单次最多支持100首) for i in range(0, len(songs), 100): spotify_api.playlist_add_items(playlist_id, songs[i:i+100]) print(f"成功添加 {len(songs)} 首歌曲到播放列表!") except spotipy.client.SpotifyException as e: print(f"发生错误:{e}")
额外注意事项
- Spotify的
playlist_add_items接口单次最多允许添加100首曲目,必须分批次处理,否则会触发接口限制错误。 - 确保
username变量是当前授权用户的Spotify用户ID(不是昵称),可通过spotify_api.current_user()['id']获取。
内容的提问来源于stack exchange,提问作者Ampuja Kid
相关产品推荐
相关产品推荐

