在Spotify中获取用户的播放列表曲目列表时,在输出中包括播放列表ID

时间:2017-03-16 20:14:52

标签: python spotify

我的目标是创建一个包含我在播放列表中添加的所有歌曲的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"
    }
  }
 }

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

  1. 将播放列表ID添加到JSON输出
  2. 将播放列表ID添加到CSV输出
  3. 我不熟悉API或Python,所以对此有任何指导意见!

1 个答案:

答案 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库。有关该文档的文档可在线获取。

希望有所帮助!