我正在通过Spotipy使用Spotify的API,并试图获取曲目的名称。我在Javascript上使用了相当多的API,并且尝试做同样的事情没有任何问题,并且在这里碰到了墙。
基本上,我使用以下端点获取给定播放列表的曲目:https://developer.spotify.com/documentation/web-api/reference/playlists/get-playlists-tracks/,并且尝试提取曲目的名称。
这将输出给定轨道的“轨道对象”:
playlist_items = spotify.playlist_tracks(playlist_nameid[playlist])['items']
for item in playlist_items:
track_object = item['track']
Here's a picture of the output of the above code
我知道我要覆盖track_object,我只是将其剥离以进行测试。
如果我尝试track_object = item['track']['name']
会收到错误
TypeError at /radio/login
'NoneType' object is not subscriptable
为确保item['track']
是可下标对象,我尝试了type(item['track'])
,输出为{}
。在这一点上我很困惑,因为错误似乎告诉我字典对象的类型为“ none”。任何帮助将不胜感激。
答案 0 :(得分:0)
Launch("https://play.google.com/store/apps/details?id=com.ssaurel.nfcreader&hl=en")
中的一项为None或playlist_items
为None。以下内容可能更适合您:
item['track']
您可以使用以下方法过滤掉所有项目:
item.get('track', {}).get('name')
或者您可以使用以下方法保护原始抓取内容:
for item in playlist_items:
if item is None:
continue
答案 1 :(得分:0)
我在@schillingt的帮助下弄清楚了-过滤无项目是正确的方法。除了过滤播放列表项目外,我还必须过滤轨道对象。
这将返回播放列表的曲目名称列表:
playlist_items = spotify.playlist_tracks(playlist_nameid[playlist])['items']
title = []
for item in playlist_items:
if item['track'] is None:
continue
else:
title.append(item['track']['name'])