功能: ''' def get_album_tracks(sp, album_id): 尝试: album_tracks = sp.album_tracks(album_id) 曲目 = album_tracks["items"]
# Create a list to hold track details
track_details = []
for track in tracks:
track_info = {
"track_name": track["name"],
"track_id": track["id"],
"artists": [artist["name"] for artist in track["artists"]],
}
track_details.append(track_info)
return track_details
except SpotifyException as e:
print(f"Spotify API error {e.code}: {e.msg}")
return None
我使用 Aphex Twin 中选定的环境作品的 album_id 来调用该函数
''' album_tracks = get_album_tracks(sp, "7aNclGRxTysfh6z0d8671k") 打印(专辑曲目) ”“”
我尝试捕获错误,但它没有打印出错误。 search_album 功能很棒
您缺少曲目['items']
这是演示代码
import spotipy
from spotipy.oauth2 import SpotifyOAuth
Client_ID = "*************** your client ID ***************"
Client_Secret = "*********** your client secret ***********"
Redirect_Uri = "*********** Callback URL ***********"
album_id = '7aNclGRxTysfh6z0d8671k'
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(
client_id = Client_ID,
client_secret= Client_Secret,
redirect_uri=Redirect_Uri,
scope='user-library-read'))
def Get_albums():
tracks = sp.album_tracks(album_id)
track_details = []
for track in tracks['items']:
track_info = {
"track_name": track["name"],
"track_id": track["id"],
"artists": [artist["name"] for artist in track["artists"]],
}
track_details.append(track_info)
return track_details
track_details = Get_albums()
for track in track_details:
print(track)
这就是结果
您可以直接使用Web API,而不是使用'spotipy'
import requests
CLIENT_ID = '*************** your client ID ***************'
CLIENT_SECRET = '*********** your client secret ***********'
AUTH_URL = 'https://accounts.spotify.com/api/token'
BASE_URL = 'https://api.spotify.com/v1/albums/'
album_id = '7aNclGRxTysfh6z0d8671k'
# POST
auth_response = requests.post(AUTH_URL, {
'grant_type': 'client_credentials',
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET,
})
# convert the response to JSON
auth_response_data = auth_response.json()
# save the access token
access_token = auth_response_data['access_token']
# print(access_token)
headers = {
'Authorization': 'Bearer {token}'.format(token=access_token)
}
# actual GET request with proper header
r = requests.get(BASE_URL + album_id, headers=headers)
r = r.json()
track_details = []
for track in r['tracks']['items']:
track_info = {
"track_name": track["name"],
"track_id": track["id"],
"artists": [artist["name"] for artist in track["artists"]],
}
track_details.append(track_info)
for track in track_details:
print(track)