我的目标是创建一个包含我在播放列表中添加的所有歌曲的CSV,同时指出该歌曲添加到哪个播放列表。
我有一个播放列表ID列表,我在Python中循环播放,因为我通过Python发出请求
https://api.spotify.com/v1/users/{user_id}/playlists/{playlist_id}/tracks
。我感兴趣的领域是:
items(added_by.id, added_at,track(name,id,duration_ms,album(name,id), artists(name, id)))
我当前的输出如下(仅显示一首曲目):
{
"items" : [ {
"added_at" : "2017-02-28T16:58:10Z",
"added_by" : {
"id" : "nelsonology"
},
"track" : {
"album" : {
"id" : "2UhSfdDHLBBbWK4ifose0x",
"name" : "Love Slacker"
},
"artists" : [ {
"id" : "5BhFZpE8kUGZJiKOsYjLQM",
"name" : "Yeek"
} ],
"duration_ms" : 245577,
"id" : "6z3fmpMqgV3a8DYZgdiU7w",
"name" : "I'm Not Ready"
}
}
}
所以我的问题是,如果有办法(如果是的话,如何):
我不熟悉API或Python,所以对此有任何指导意见!
答案 0 :(得分:0)
要调用/v1/users/{user_id}/playlists/{playlist_id}/tracks
,您已经拥有播放列表ID。为了将该播放列表转换为csv,您可以编写如下内容:
import sys
import spotipy
import spotipy.util as util
scope = 'user-library-read'
# Define the playlist id out here so we can use it later
userid = '11995522'
playlistid = 'testplaylistid'
if len(sys.argv) > 1:
username = sys.argv[1]
else:
print "Usage: %s username" % (sys.argv[0],)
sys.exit()
token = util.prompt_for_user_token(username, scope)
if token:
sp = spotipy.Spotify(auth=token)
results = sp.user_playlist_tracks(userid, playlistid, 'items(added_by.id, added_at,track(name,id,duration_ms,album(name,id), artists(name, id)))')
for item in results['items']:
track = item['track']
print ','.join([
# This inserts the playlist ID into your CSV output
playlistid,
item['added_by']['id'],
item['added_at'],
item['track']['name'],
item['track']['id'],
item['track']['duration_ms'],
item['track']['album']['name'],
item['track']['album']['id'],
item['track']['artists'][0]['name'],
item['track']['artists'][0]['id'],
])
else:
print "Can't get token for", username
此示例使用spotipy python Spotify API Wrapper库。有关该文档的文档可在线获取。
希望有所帮助!