在 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"
    }
  }
 }

所以我的问题是是否有办法(如果有,如何):

  1. 将播放列表 ID 添加到 JSON 输出中
  2. 将播放列表 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 库。在线提供相关文档。

希望对您有所帮助!