如何通过 Spotipy 获取所有项目,包括下一页

How to get all items through Spotipy including next page

使用 Spotipy python library 我正在尝试打印出我从 Spotify 保存的所有歌曲。

使用以下代码,我能够打印出返回的第一页的所有结果:

results = sp.current_user_saved_tracks()
for item in results['items']:
        results = sp.next(results['items'])
        track = item['track']
        label = track['artists'][0]['name'] + ' - ' + track['name'] 
        print (label)

使用其他一些关于如何遍历具有多个页面的播放列表的示例,我放置了一个 while 语句以转到下一页(如果存在的话)

results = sp.current_user_saved_tracks()
for item in results['items']:
    while results['next']:
        results = sp.next(results['items'])
        track = item['track']
        label = track['artists'][0]['name'] + ' - ' + track['name'] 
        print (label)

但这不起作用,我收到以下错误:

TypeError: list indices must be integers or slices, not str

这是从 Spotify API

获取用户曲目结构的样子
{
  "href": "https://api.spotify.com/v1/me/tracks?offset=0&limit=50",
  "items": []
  "limit": 50,
  "next": "https://api.spotify.com/v1/me/tracks?offset=50&limit=50",
  "offset": 0,
  "previous": null,
  "total": 414
}

items 数组中有我提交的曲目,因为曲目太多了。

谁能解释一下如何正确进入下一页并继续 for 循环?

我认为你应该试试:

for item in results['tracks']['items']:
    while results['tracks']['next']:
        results = sp.next(results['tracks']['items'])
        track = item['track']
        label = track['artists'][0]['name'] + ' - ' + track['name'] 
        print (label)

想通了:

results = sp.current_user_saved_tracks()
tracks = results['items']
while results['next']:
    results = sp.next(results)
    tracks.extend(results['items'])

for track in tracks:
    print(track['track']['name'])