【问题标题】:Speed up the query of audio features (Spotify Web API)加快音频特征的查询(Spotify Web API)
【发布时间】:2020-09-12 15:15:03
【问题描述】:

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

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

有没有人知道如何加快功能或音频功能的查询是否总是需要很长时间?

非常感谢您的回答。 提前致谢。 埃里克

【问题讨论】:

    标签: python api spotify


    【解决方案1】:

    所花费的时间可以得到有意义的证明。

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

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

    使用audio_features(tracks=[])的方法。 参见文档here

    【讨论】:

      猜你喜欢
      • 2012-06-22
      • 2019-04-02
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 2018-09-09
      • 2016-02-19
      • 1970-01-01
      相关资源
      最近更新 更多