使用 Spotipy 从播放列表中获取曲目很慢

Getting tracks from a playlist using Spotipy is slow

我正在为一个 django 项目与 Spotify Web API 交互,该项目允许用户上传他们的播放列表,以便他们根据特定参数(即 spotify 分配给所有曲目的音频功能)进行排名。

我正在使用 Spotipy 库通过 python 查询 spotify API。它对用户和播放列表数据来说快如闪电,但是按照有关如何从播放列表获取曲目的 Spotipy 教程,我发现响应非常慢。

曲目等待时间与曲目中播放列表的长度成正比。我认为这与 spotipy 库打包和发送请求的效率低下有关。

有没有人遇到过关于获取轨迹和速度的类似瓶颈?

我将不胜感激..我们的项目在某种程度上取决于它。

Spotipy一点也不慢。

总之,你可以尝试自己提出要求。

import requests
import json

然后得到你想要的端点:(参考:Spotify Web API Endpoint Reference

SEARCH_PLAYLIST_ENDPOINT ='https://api.spotify.com/v1/search?type=playlist'
AUDIO_FEATURES_ENDPOINT = 'https://api.spotify.com/v1/audio-features/{id}'

如果您有访问令牌,请按名称过滤播放列表:

def search_playlist(name):
    path = 'token.json'
    with open(path) as t:
        token = json.load(t)
    myparams = {'type': 'playlilst'}
    myparams['q'] = name
    resp = requests.get(SEARCH_PLAYLIST_ENDPOINT, params=myparams, headers={"Authorization": "Bearer {}".format(token)})
    return resp.json()

显然,查询播放列表项的响应时间取决于播放列表曲目的数量,这可能会有很大差异。

然后就可以使用这个函数获取音频特征了:

# https://developer.spotify.com/web-api/get-related-artists/
def get_audio_features(track_id):
    path = 'token.json'
    with open(path) as t:
        token = json.load(t)
    url = AUDIO_FEATURES_ENDPOINT.format(id=track_id)
    resp = requests.get(url, headers={"Authorization": "Bearer {}".format(token)})
    return resp.json()

对其他请求遵循相同的逻辑。对此进行测试并与 Spotipy 速度进行比较。