python spotipy 播放列表[项目] 为空
python spotipy playlists[items] is empty
使用下面的代码,我可以为我的用户检索一个 playlists
对象,但是 items
条目的列表是空的。我有几百个播放列表,所以我一定在这段代码中遗漏了一些东西。
import spotipy
import spotipy.util as util
username='xxxxx'
clientid='xxxxx'
clientsecret='xxxxx'
redirecturi='http://localhost'
thescope='user-library-read'
print("Requesting token...")
token = util.prompt_for_user_token(username,scope=thescope,client_id=clientid,client_secret=clientsecret,redirect_uri=redirecturi)
print("Token is %s" % token)
if token:
sp = spotipy.Spotify(auth=token)
playlists = sp.user_playlists(username)
print("Playlists are ", playlists)
else:
print "Can't get token for", username
输出为:
Requesting token...
Token is<token>
('Playlists are ', {u'items': [], u'next': None, u'href': u'https://api.spotify.com/v1/users/havanon/playlists?offset=0&limit=50', u'limit': 50, u'offset': 0, u'total': 0, u'previous': None})
我认为 library
和 playlist
是您可以访问的不同资源。
您可能需要改为应用 playlist-read-private
范围。
playlist-read-private
- Description: Read access to user's private playlists.
- Visible to users: Access your private playlists.
Endpoints that require the playlist-read-private
scope
- Check if Users Follow a Playlist
- Get a List of Current User's Playlists
- Get a List of a User's Playlists
虽然 user-library-read
范围似乎无法访问您的播放列表。
来源:https://developer.spotify.com/documentation/general/guides/scopes/#user-library-read
这似乎有效。但它没有 return 播放列表文件夹。而且我还没有发现任何关于此类的提及。
#!/usr/bin/env python2
import sys
import spotipy
import spotipy.util as util
username='xxx'
clientid='xxx'
clientsecret='xxx'
redirecturi='http://localhost'
thescope='playlist-read-private'
token = util.prompt_for_user_token(username,scope=thescope,client_id=clientid,client_secret=clientsecret,redirect_uri=redirecturi)
if token:
sp = spotipy.Spotify(auth=token)
playlists = sp.current_user_playlists()
while playlists:
for i, playlist in enumerate(playlists['items']):
print("%4d %s %s" % (i + 1 + playlists['offset'], playlist['uri'], playlist['name']))
if playlists['next']:
print("getting next 50")
playlists = sp.next(playlists)
else:
playlists = None
else:
print ("Can't get token for", username)
使用下面的代码,我可以为我的用户检索一个 playlists
对象,但是 items
条目的列表是空的。我有几百个播放列表,所以我一定在这段代码中遗漏了一些东西。
import spotipy
import spotipy.util as util
username='xxxxx'
clientid='xxxxx'
clientsecret='xxxxx'
redirecturi='http://localhost'
thescope='user-library-read'
print("Requesting token...")
token = util.prompt_for_user_token(username,scope=thescope,client_id=clientid,client_secret=clientsecret,redirect_uri=redirecturi)
print("Token is %s" % token)
if token:
sp = spotipy.Spotify(auth=token)
playlists = sp.user_playlists(username)
print("Playlists are ", playlists)
else:
print "Can't get token for", username
输出为:
Requesting token...
Token is<token>
('Playlists are ', {u'items': [], u'next': None, u'href': u'https://api.spotify.com/v1/users/havanon/playlists?offset=0&limit=50', u'limit': 50, u'offset': 0, u'total': 0, u'previous': None})
我认为 library
和 playlist
是您可以访问的不同资源。
您可能需要改为应用 playlist-read-private
范围。
playlist-read-private
- Description: Read access to user's private playlists.
- Visible to users: Access your private playlists.
Endpoints that require the
playlist-read-private
scope
- Check if Users Follow a Playlist
- Get a List of Current User's Playlists
- Get a List of a User's Playlists
虽然 user-library-read
范围似乎无法访问您的播放列表。
来源:https://developer.spotify.com/documentation/general/guides/scopes/#user-library-read
这似乎有效。但它没有 return 播放列表文件夹。而且我还没有发现任何关于此类的提及。
#!/usr/bin/env python2
import sys
import spotipy
import spotipy.util as util
username='xxx'
clientid='xxx'
clientsecret='xxx'
redirecturi='http://localhost'
thescope='playlist-read-private'
token = util.prompt_for_user_token(username,scope=thescope,client_id=clientid,client_secret=clientsecret,redirect_uri=redirecturi)
if token:
sp = spotipy.Spotify(auth=token)
playlists = sp.current_user_playlists()
while playlists:
for i, playlist in enumerate(playlists['items']):
print("%4d %s %s" % (i + 1 + playlists['offset'], playlist['uri'], playlist['name']))
if playlists['next']:
print("getting next 50")
playlists = sp.next(playlists)
else:
playlists = None
else:
print ("Can't get token for", username)