我正在使用spotifyr库,在那里我想找到多首曲目的音频特征。例如,我可以这样做,以便使用其id查找特定歌曲的音频特征。
analysis2 <- get_track_audio_features("2xLMifQCjDGFmkHkpNLD9h",
authorization = get_spotify_access_token())昨天,我在下面写了一个函数,它获取数据帧中的所有曲目,找到所有曲目的音频特征,并将它们存储在列表中,运行良好。
get_analysis <- function(track_id)
{
analysis <- get_track_audio_features(track_id,
authorization = get_spotify_access_token())
}
tracks_list <- lapply(all_tracks$track.id, get_analysis)现在我收到一个错误,说请求失败503,授权错误(track_id,get_track_audio_features= get_spotify_access_token()):服务不可用(HTTP503)。
我仍然能够找到特定歌曲的音频功能,所以我不确定哪种服务不可用。
发布于 2020-12-28 16:10:35
我怀疑你正在访问你的数据中的一首歌曲,但spotify拒绝了你的回复。您可以尝试添加一个错误捕获机制,以查看是哪种机制:
get_analysis <- function(track_id){
tryCatch(
expr = {
get_track_audio_features(track_id, authorization = get_spotify_access_token())
},
error = function(e){
print(track_id)
}) -> analysis
return(analysis)
}
tracks_list <- lapply(all_tracks$track.id, get_analysis) 我查看了包的源代码,没有看到任何偷偷摸摸的速率限制问题,并且Web API页面将错误503显示为一个需要等待解决的通用错误(https://developer.spotify.com/documentation/web-api/)。因此,你也可以尝试添加10分钟的等待(我在Spotify的网站上找不到确切的等待时间):
get_analysis <- function(track_id){
tryCatch(
expr = {
get_track_audio_features(track_id, authorization = get_spotify_access_token()) -> output
return(output)
},
error = function(e){
print(track_id)
return(e)
}) -> output
}
wait.function <- funciton(){
Sys.sleep(600)
}
get_analysis_master <- function(all_tracks){
k <- 1
tracks_list <- list()
for(track.id in all_tracks$track.id){
get_analysis(track.id) -> output
if(!inherits(output, "error")){
tracks_list[[k]] <- output
k <- k + 1
} else {
wait.function()
}
return(tracks_list)
}
get_analysis_master(all_tracks) -> tracks_listhttps://stackoverflow.com/questions/65472754
复制相似问题