0

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

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

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

有没有人在获取轨道和速度方面遇到过类似的瓶颈?

我将非常感激.. 我们的项目在这一点上取决于它。

4

1 回答 1

3

Spotipy一点也不慢。

无论如何,您可以尝试自己提出请求。

import requests
import json

然后获取您想要的端点:(请参阅:Spotify Web API 端点参考

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速度进行比较。

于 2018-03-13T05:45:13.927 回答