我正在与Spotify Web API进行django项目的互动,该项目允许用户上传他们的播放列表,以便根据某些参数对其进行排名,即音频功能spotify分配给所有曲目。
我使用Spotipy库通过python查询spotify API。对于用户和播放列表数据来说,它的闪电速度很快,但是根据Spotipy有关如何从播放列表中获取曲目的教程,我发现响应非常慢。
曲目的等待时间与曲目中播放列表的长度成正比。我认为它与spotipy库如何打包和发送请求的效率低下有关。
有没有人遇到过关于获得曲目和速度的类似瓶颈?
我非常感激..此时我们的项目取决于它。
答案 0 :(得分:2)
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
速度进行比较。