在 Spotify 中获取用户播放列表曲目列表时,在输出中包含播放列表 ID
Include playlist id in output when getting a list of user's playlist tracks in Spotify
我的 objective 是为我添加到播放列表中的所有歌曲创建 CSV,同时指出歌曲添加到哪个播放列表。
我有一个播放列表 ID 列表,我在 Python 中循环播放这些 ID,因为我正在通过
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"
}
}
}
所以我的问题是是否有办法(如果有,如何):
- 将播放列表 ID 添加到 JSON 输出中
- 将播放列表 ID 添加到 CSV 输出中
我不熟悉 API 或 Python,因此非常感谢任何相关指导!
为了调用 /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 库。在线提供相关文档。
希望对您有所帮助!
我的 objective 是为我添加到播放列表中的所有歌曲创建 CSV,同时指出歌曲添加到哪个播放列表。
我有一个播放列表 ID 列表,我在 Python 中循环播放这些 ID,因为我正在通过
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"
}
}
}
所以我的问题是是否有办法(如果有,如何):
- 将播放列表 ID 添加到 JSON 输出中
- 将播放列表 ID 添加到 CSV 输出中
我不熟悉 API 或 Python,因此非常感谢任何相关指导!
为了调用 /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 库。在线提供相关文档。
希望对您有所帮助!