You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法向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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:52:37