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

Spotipy current_user_playlists()仅返回公开播放列表,无法获取全部列表

问题解决:无法获取Spotify用户创建及关注的全部播放列表

问题现象

调用sp.current_user_playlists()仅能获取公开个人资料的播放列表,移除公开列表后无任何返回;需要获取用户创建的所有播放列表(含私有、协作)以及关注的播放列表。

代码现状

获取播放列表的函数:

def getPlaylists():
    session[TOKEN_INFO], authorized = get_token()
    session.modified = True
    
    if not authorized:
        return redirect('/')
    sp = spotipy.Spotify(auth=session.get('token_info').get('access_token'))
    return sp.current_user_playlists()

授权配置代码:

def create_oauth():
    return SpotifyOAuth(
        client_id=client_id,
        client_secret=client_secret,
        redirect_uri=url_for('redirectPage', _external=True),
        scope='playlist-read-private'
    )

解决步骤

1. 补充授权权限范围

当前仅使用playlist-read-private权限,无法获取协作播放列表和关注的播放列表,需要更新scope:

def create_oauth():
    return SpotifyOAuth(
        client_id=client_id,
        client_secret=client_secret,
        redirect_uri=url_for('redirectPage', _external=True),
        scope='playlist-read-private playlist-read-collaborative user-follow-read'
    )
  • playlist-read-collaborative:获取用户参与的协作播放列表
  • user-follow-read:获取用户关注的播放列表

2. 分别获取用户自有播放列表和关注的播放列表

current_user_playlists()仅返回用户自己创建的播放列表(含私有、协作,需对应权限),关注的播放列表需要调用current_user_followed_playlists()单独获取,同时处理API分页返回:

def getPlaylists():
    session[TOKEN_INFO], authorized = get_token()
    session.modified = True
    
    if not authorized:
        return redirect('/')
    sp = spotipy.Spotify(auth=session.get('token_info').get('access_token'))
    
    # 获取用户自有播放列表(含私有、协作)
    own_playlists = []
    results = sp.current_user_playlists()
    while results:
        own_playlists.extend(results['items'])
        results = sp.next(results) if results['next'] else None
    
    # 获取用户关注的播放列表
    followed_playlists = []
    results = sp.current_user_followed_playlists(limit=50)
    while results:
        followed_playlists.extend(results['items'])
        results = sp.next(results) if results['next'] else None
    
    # 合并所有播放列表
    all_playlists = own_playlists + followed_playlists
    return all_playlists

3. 注意事项

  • 更新权限后,需要让用户重新授权,否则旧的token不会包含新增的权限
  • 处理分页是因为Spotify API默认每页返回最多50条数据,需循环获取直到没有下一页

内容的提问来源于stack exchange,提问作者tommy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:52:34