在大学数据科学课程中做一个项目,这是我第一次使用 API。我需要使用 Spotify API 获取有关曲目的不同数据,但我很早就遇到了问题。我可以访问一些有关曲目流行度、持续时间等的基本数据,但在尝试获取音频功能时也收到 403 错误。据我在网上搜索的帮助,显然我在 Spotify 访问令牌范围内没有足够的权限。但我不知道如何解决这个问题。
我尝试使用 sp.audio_features(track_ids) 获取相同曲目的音频特征(例如节奏、可舞性、能量)。这就是问题出现的地方。 当我运行代码时,收到错误,并且未检索音频功能。 错误:“GET 到 https://api.spotify.com 时出现 HTTP 错误...参数:{} 由于无而返回 403”
from spotipy.oauth2 import SpotifyOAuth
import spotipy
from dotenv import load_dotenv
import os
import pandas as pd
load_dotenv()
client_id = os.getenv("SPOTIPY_CLIENT_ID")
client_secret = os.getenv("SPOTIPY_CLIENT_SECRET")
redirect_uri = os.getenv("SPOTIPY_REDIRECT_URI")
auth_manager = SpotifyOAuth(
client_id=client_id,
client_secret=client_secret,
redirect_uri=redirect_uri,
scope="user-top-read"
)
sp = spotipy.Spotify(auth_manager=auth_manager)
# Fetch data
top_tracks = sp.current_user_top_tracks(limit=10)
track_data = []
track_ids = []
for item in top_tracks['items']:
track_ids.append(item['id'])
track_data.append({
'track_id': item['id'],
'track_name': item['name'],
'artists': ", ".join(artist['name'] for artist in item['artists']),
'popularity': item['popularity'],
'explicit': item['explicit'],
'duration_ms': item['duration_ms']
})
# Fetch audio features
try:
audio_features = sp.audio_features(track_ids) # Causing errors
audio_features_df = pd.DataFrame(audio_features)
df = pd.DataFrame(track_data)
df = pd.merge(df, audio_features_df, left_on='track_id', right_on='id')
except:
print("Can not access audio features")
df = pd.DataFrame(track_data)
df.head(10)