首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速音频特征查询(Spotify Web API)

加速音频特征查询(Spotify Web API)
EN

Stack Overflow用户
提问于 2020-09-12 23:15:04
回答 1查看 218关注 0票数 1

我目前正在编写一个小的Python程序,用来使用Spotify Web API分析保存的歌曲的音频特征。不幸的是,查询每首歌曲的音频特征需要很长时间。大约每秒分析3-4首歌曲。对于2500首存储的歌曲,该函数需要很长时间。作为一个初学者,我还没有找到加速函数的方法。以下是该函数的源代码:

代码语言:javascript
复制
def avg_features(token, tracklist):
    track_counter: int = 0
    danceability = 0
    energy = 0
    loudness = 0
    speechiness = 0
    acousticness = 0
    instrumentalness = 0
    liveness = 0
    valence = 0
    tempo = 0

    for track in tracklist:
        query = f"https://api.spotify.com/v1/audio-features/{track}"
        response=requests.get(query, headers={"Authorization": f"Bearer {token}"})
        response=response.json()
        danceability += response['danceability']
        energy += response['energy']
        loudness += response['loudness']
        speechiness += response['speechiness']
        acousticness += response['acousticness']
        instrumentalness += response['instrumentalness']
        liveness += response['liveness']
        valence += response['valence']
        tempo += response['tempo']
        track_counter += 1
        print(track_counter)

    danceability /= track_counter
    energy /= track_counter
    loudness /= track_counter
    speechiness /= track_counter
    acousticness /= track_counter
    instrumentalness /= track_counter
    liveness /= track_counter
    valence /= track_counter
    tempo /= track_counter

    feature_list: Dict[str, int] = {'danceability': danceability, 'energy': energy, 'loudness': loudness, 'speechiness': speechiness, 'acousticness': acousticness', 'instrumentalness': instrumentalness, 'liveness': liveness, 'valence': valence, 'tempo': tempo}

    return feature_list

有没有人知道如何提高函数的速度,或者音频特征的查询是否总是需要很长时间?

我将非常感谢你的回答。提前谢谢。埃里克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-13 15:42:02

它所花费的时间是有意义的。

首先,使用WEB API不适合进行大量调用,因为在您的示例中,您对该API进行了大约2500次调用。另外,请注意,每个API调用都有一个可变的延迟时间,因此返回结果的时间没有固定的时间。随着时间的推移,延迟也有可能降低。这样的因素归因于它所花费的时间。根据我的计算,完成所有曲目元数据应该需要大约11分钟。

解决方案是使用spotipy Library。这只是WEB API的一个包装器。这样做的好处是它有所有的内置函数来处理您的查询。

方法来使用audio_features(tracks=[])。请参阅文档中的here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63861802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档