我正在尝试使用Spotipy library for python拉出某个播放列表中的所有曲目。
无论参数限制如何,user_playlist_tracks功能都限制为100首曲目。 Spotipy文档将其描述为:
user_playlist_tracks(user,playlist_id = None,fields = None,limit = 100, offset = 0,market = None)
详细了解播放列表的曲目 由用户拥有。
参数:
- 用户
- 用户的id playlist_id
- 播放列表字段的ID
- 返回限制的字段
- 要返回的最大曲目数
- 返回市场的第一首曲目的索引
- ISO 3166-1 alpha-2国家/地区代码。
使用Spotify进行身份验证后,我目前正在使用以下内容:
username = xxxx
playlist = #fromspotipy
sp_playlist = sp.user_playlist_tracks(username, playlist_id=playlist)
tracks = sp_playlist['items']
print tracks
有没有办法返回100多首曲目?我已尝试在函数参数中设置limit = None,但它会返回错误。
答案 0 :(得分:1)
另一种解决方法是编写一个for循环并执行:
offset +=100
然后,您可以在末端连接轨道,或将其放入数据框中。 功能参考:
playlist_tracks(playlist_id, fields=None, limit=100, offset=0, market=None)
参考:https://spotipy.readthedocs.io/en/2.7.0/#spotipy.client.Spotify.playlist_tracks
答案 1 :(得分:0)
以下是spotipy中使用的user_playlist_tracks
模块。 (注意它默认为100限制)。
尝试将限制设置为200.
def user_playlist_tracks(self, user, playlist_id = None, fields=None,
limit=100, offset=0):
''' Get full details of the tracks of a playlist owned by a user.
Parameters:
- user - the id of the user
- playlist_id - the id of the playlist
- fields - which fields to return
- limit - the maximum number of tracks to return
- offset - the index of the first track to return
'''
plid = self._get_id('playlist', playlist_id)
return self._get("users/%s/playlists/%s/tracks" % (user, plid),
limit=limit, offset=offset, fields=fields)