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

使用Spotify API获取曲目数据时遇“None不可下标”错误求助

问题:Spotipy调用playlist_tracks返回None导致下标访问错误

我用Spotipy库从Spotify播放列表链接提取曲目信息(专辑名、艺术家名等),但代码里sp.playlist_tracks(playlist_id=playlist_uri)['items']触发了<Object of type "None" is not subscriptable>错误。我知道这个错误的含义,但搞不清和代码的关联,排查后仍需帮助。我的代码如下:

client_credentials_manager = SpotifyClientCredentials(client_id = client_id, client_secret= client_secret)

sp = spotipy.Spotify(client_credentials_manager = client_credentials_manager)

# Playlist link
link = "https://open.spotify.com/playlist/37i9dQZF1DX2Zjg8kBuEsQ"
# Get the URI of the playlist
playlist_uri = link.split("/")[-1]

# Get track information item for each track in the playlist
uris = [x for x in sp.playlist_tracks(playlist_id=playlist_uri)['items']]

错误原因与解决方法

这个错误的核心是sp.playlist_tracks()返回了None,你直接对None做['items']下标访问才触发报错。以下是常见问题和修复方案:

1. Playlist URI可能包含多余参数

如果你的播放列表链接末尾带有?si=xxx这类参数,split("/")[-1]会把参数也包含进去,导致API识别失败返回None。修正代码:

# 截断URI后的参数部分
playlist_uri = link.split("/")[-1].split("?")[0]

2. API授权失败

确认client_id和client_secret是否正确,有没有拼写错误或权限问题。可以先测试基础授权:

# 测试授权是否正常
test_user = sp.user("spotify")
if test_user is None:
    print("授权失败,请检查client_id和client_secret")

3. 增加失败判断逻辑

避免直接对API返回值做下标访问,先判断是否获取成功:

playlist_data = sp.playlist_tracks(playlist_id=playlist_uri)
if playlist_data:
    uris = [x for x in playlist_data['items']]
else:
    print("获取播放列表数据失败,请检查URI或授权信息")

4. 播放列表权限问题

Client Credentials Flow只能访问公开播放列表,如果目标播放列表是私有的,API会返回None。确认播放列表是否设置为公开状态。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:55:24