Spotipy:如何从播放列表中读取超过100首曲目

时间:2016-08-22 18:24:27

标签: python spotipy

我正在尝试使用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,但它会返回错误。

2 个答案:

答案 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)