API Spotify表演艺术家

时间:2020-10-09 12:21:31

标签: python api spotify

因此,我试图在使用API​​方面变得更好。

我找到了一个练习,我必须搜索一位艺术家,并且api会回复与该名称相关的所有艺术家。

我已经阅读了Spotify开发人员上的文档,但是我无法修复自己的代码。

我总是收到与我的API链接不起作用相同的错误消息。

任何人都可以修复我的代码并解释需要做什么。 不要忘记更改客户端ID和密码。

End result

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'])

1 个答案:

答案 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  ---  []