因此,我试图在使用API方面变得更好。
我找到了一个练习,我必须搜索一位艺术家,并且api会回复与该名称相关的所有艺术家。
我已经阅读了Spotify开发人员上的文档,但是我无法修复自己的代码。
我总是收到与我的API链接不起作用相同的错误消息。
任何人都可以修复我的代码并解释需要做什么。 不要忘记更改客户端ID和密码。
import urllib.parse
import requests
main_api = "https://accounts.spotify.com/api/token"
CLIENT_ID = "your client id"
CLIENT_SECRET = "your client secret"
auth_response = requests.post(main_api, {
'grant_type': 'client_credentials',
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET,
})
auth_response_data = auth_response.json()
access_token = auth_response_data['access_token']
headers = {
'Authorization': 'Bearer {token}'.format(token=access_token)
}
print(access_token)
BASE_URL = 'https://api.spotify.com/v1/'
artist_name = input("Give artist name: ")
r = requests.get(BASE_URL + 'search/' + artist_name + '/artists', headers=headers, params={'include_groups': 'artists', 'limit':50})
print("URL: " + str(r))
d = r.json()
print(BASE_URL + 'search/' + artist_name + "/artists")
print("Name")
for artists in d['items']:
print(artists['name'], ' --- ', artists['genres'])
答案 0 :(得分:0)
您一直在将请求发送到错误的终结点(某种程度上)并且具有无效的有效负载。根据{{3}},这是示例请求的样子:
curl -X GET“ https://api.spotify.com/v1/search?q=tania%20bowra&type=artist” -H“授权:承载{您的访问令牌}”
这是在Python中的操作方式:
from urllib.parse import urlencode
import requests
main_api = "https://accounts.spotify.com/api/token"
auth_response = requests.post(main_api, {
'grant_type': 'client_credentials',
'client_id': 'YOUR_CLIENT_ID',
'client_secret': "YOUR_CLIENT_SECRET",
})
access_token = auth_response.json()['access_token']
headers = dict(Authorization=f"Bearer {access_token}")
API_URL = "https://api.spotify.com/v1/"
query = {
"q": "justinbieber",
"type": "artist",
"limit": "5",
}
end_point = "search?"
api_response = requests.get(f"{API_URL}{end_point}{urlencode(query)}", headers=headers).json()
for artists in api_response["artists"]["items"]:
print(f"{artists['name']} --- {artists['genres']}")
输出:
Justin Bieber --- ['canadian pop', 'dance pop', 'pop', 'post-teen pop']
Justin Timberlake --- ['dance pop', 'pop']
Justin Drew Bieber --- []
Justin Bieber Tribute Team --- ['fake']
Justin Bieber's Karaoke Band --- []