Spotipy-仅列出播放列表中的曲目和歌手姓名

问题描述

大家好,谢谢您的帮助:)

有人可以帮助我理解如何使用以下代码,该代码显示指定播放列表的数据,并仅显示艺术家和曲目名称吗?我一直在忙于阅读api文档几个小时,但至今还无法弄清它的故事。现在,当它显示数据时,它给了我一堆混乱的一堆数据。另外,请注意,我在此代码的client_id和Secret部分中放置了伪值。

from spotipy.oauth2 import SpotifyClientCredentials
import spotipy
import json


PlaylistExample = '37i9dQZEVXbMDoHDwVN2tF'

cid = '123'
secret = 'xyz'


auth_manager = SpotifyClientCredentials(client_id=cid,client_secret=secret)
sp = spotipy.Spotify(auth_manager=auth_manager)




playlist_id = 'spotify:user:spotifycharts:playlist:37i9dQZEVXbJiZcmkrIHGU'
results = sp.playlist(playlist_id)
print(json.dumps(results,indent=4))

解决方法

这样的东西有用吗?

print("Song - Artist - Album\n")

for item in results['tracks']['items']:
    print(
        item['track']['name'] + ' - ' +
        item['track']['artists'][0]['name'] + ' - ' +
        item['track']['album']['name']
    )
    

您的输出将类似于以下内容:

Song - Artist - Album

ONLY - ZHU - ONLY
Bad - 2012 Remaster - Michael Jackson - Bad 25th Anniversary
Orion - Rodrigo y Gabriela - Rodrigo y Gabriela
Shape of You - Ed Sheeran - ÷ (Deluxe)

或者,您可以根据Spotify返回的结构创建自己的结构,但只需保留所需的内容即可。

result_dict = {
    'tracks': {
        'items': [],'limit': 100,'next': None,'offset': 0,'previous': None,'total': 16
    },'type': 'playlist','uri': '<playlist_uri>'
}

从上方进入'items'的轨道结构:

track_dict = {
    'track': {
        'album': {
            'name': item['track']['album']['name'],},'artists': [{
            'name': item['track']['artists'][0]['name'],}],'name': item['track']['name'],}
}

然后依次迭代并插入:

for item in results['tracks']['items']:
    track_dict = {
        'track': {
            'album': {
                'name': item['track']['album']['name'],'artists': [{
                'name': item['track']['artists'][0]['name'],}
    }
    # Append the track dict structure to your results dict structure
    result_dict['tracks']['items'].append(track_dict)

在打印result_dict时将其作为结果:

{
  'tracks': {
    'items': [{
      'track': {
        'album': {
          'name': 'ONLY'
        },'artists': [{
          'name': 'ZHU'
        }],'name': 'ONLY'
      }
    },{
      'track': {
        'album': {
          'name': 'Bad 25th Anniversary'
        },'artists': [{
          'name': 'Michael Jackson'
        }],'name': 'Bad - 2012 Remaster'
      }
    },{
      'track': {
        'album': {
          'name': 'Rodrigo y Gabriela'
        },'artists': [{
          'name': 'Rodrigo y Gabriela'
        }],'name': 'Orion'
      }
    },{
      'track': {
        'album': {
          'name': '÷ (Deluxe)'
        },'artists': [{
          'name': 'Ed Sheeran'
        }],'name': 'Shape of You'
      }
    }],'total': 4
  },'uri': '<playlist_uri>'
}