【发布时间】:2022-12-14 01:14:41
【问题描述】:
我正在尝试使用 spotipy 从播放列表中的歌曲中获取 spotify 音频功能。但是,我只得到播放列表中最后一首歌曲的数据。我的代码如下所示:
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import time
import numpy as np
import pandas
client_id = 'ID'
client_secret = "Secret"
#Authentication - without user
client_credentials_manager = SpotifyClientCredentials(client_id=client_id,
client_secret=client_secret)
sp = spotipy.Spotify(client_credentials_manager = client_credentials_manager)
playlist_link = "https://open.spotify.com/playlist/3VJlwgnV4IaxGK8uIEZMjV?
si=ca8c506dd5d04663"
playlist_URI = playlist_link.split("/")[-1].split("?")[0]
track_uris = [x["track"]["uri"] for x in sp.playlist_tracks(playlist_URI)["items"]]
for track in sp.playlist_tracks(playlist_URI)["items"]:
#URI
track_uri = track["track"]["uri"]
#Track name
track_name = track["track"]["name"]
#Main Artist
artist_uri = track["track"]["artists"][0]["uri"]
artist_info = sp.artist(artist_uri)
#Name, popularity, genre
artist_name = track["track"]["artists"][0]["name"]
artist_pop = artist_info["popularity"]
artist_genres = artist_info["genres"]
#Album
album = track["track"]["album"]["name"]
#Popularity of the track
track_pop = track["track"]["popularity"]
result = track_name, sp.audio_features(track_uri)
result
我已经填写了 ID,但出于隐私考虑,我在此处将其删除。
【问题讨论】:
-
当您可能想将结果添加到结构并返回时,您正在 for 循环中返回。你到底想返回什么?
-
几个问题:循环只运行一次,还是运行多次但输出相同的数据?打印出
track_name和track_uri会产生什么结果? -
@Bob 我想返回播放列表中所有歌曲的音频功能,我想把它放在 pandas 数据框中。
-
@MB 循环只运行一次,我只得到最后一首歌的数据一次。打印曲目名称或 track_uri 也会产生最后一首歌曲的名称或 track_uri。