当我尝试运行这个斑点函数时,它冻结了,我不明白为什么

问题描述 投票:0回答:1

功能: ''' 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 功能很棒

spotify spotipy
1个回答
0
投票

您缺少曲目['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)

结果

© www.soinside.com 2019 - 2024. All rights reserved.