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

Spotipy访问Spotify歌单时报错TypeError: 'NoneType' object is not subscriptable求助

错误根因

报错是audio_features变量为None导致的:部分特殊曲目(如无版权内容、区域限制内容、播客类内容)在Spotify后台没有对应的音频特征数据,sp.audio_features()接口对这类曲目ID会返回None,直接对None执行字典取值操作就触发了该类型错误。

修复方案

建议增加非空判断逻辑,无特征数据的曲目可以直接跳过,也可以选择填充默认值后保留,以下是修改后的函数代码:

def analyze_playlist(creator, playlist_id):
    playlist_features_list = ["artist","album","track_name","track_id","acousticness","danceability","energy","key","loudness","mode","speechiness","instrumentalness","liveness","valence","tempo","duration_ms","time_signature"]
    playlist_df = pd.DataFrame(columns = playlist_features_list)
    playlist = sp.user_playlist_tracks(creator, playlist_id)["items"]
    
    for track in playlist:
        playlist_features = {}
        # 先取基础曲目信息
        playlist_features["artist"] = track["track"]["album"]["artists"][0]["name"]
        playlist_features["album"] = track["track"]["album"]["name"]
        playlist_features["track_name"] = track["track"]["name"]
        playlist_features["track_id"] = track["track"]["id"]
        
        audio_features = sp.audio_features(playlist_features["track_id"])[0]
        # 新增非空判断,无特征数据的曲目直接跳过
        if not audio_features:
            # 可选:打印无特征的曲目信息方便排查
            # print(f"跳过无特征数据曲目:{playlist_features['artist']} - {playlist_features['track_name']},ID:{playlist_features['track_id']}")
            continue
        
        # 存在特征数据再进行赋值
        for feature in playlist_features_list[4:]:
            playlist_features[feature] = audio_features[feature]

        track_df = pd.DataFrame(playlist_features, index = [0])
        playlist_df = pd.concat([playlist_df, track_df], ignore_index = True)

    return playlist_df

如果需要保留所有曲目,不想跳过无特征数据的条目,可以把continue替换为填充默认值的逻辑,比如给所有音频特征字段填充0或者pd.NA:

if not audio_features:
    for feature in playlist_features_list[4:]:
        playlist_features[feature] = pd.NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:54:00