Spotipy - 仅列出播放列表中的曲目和艺术家姓名

Spotipy - Listing only track and artists names in a playlist

大家好,在此先感谢您的帮助:)

谁能帮我理解如何使用下面的代码来显示指定播放列表的数据,并且只显示艺术家和曲目名称?我已经研究 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'],
            }],
            'name': item['track']['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'
      }
    }],
    'limit': 100,
    'next': None,
    'offset': 0,
    'previous': None,
    'total': 4
  },
  'type': 'playlist',
  'uri': '<playlist_uri>'
}