You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spotify API艺术家搜索代码报错求助:API链接无效问题

修复Spotify API搜索艺术家的代码问题

我来帮你搞定这个API链接无效的问题!你的代码主要在API请求路径、参数传递和响应解析这几个地方出了问题,下面是修复后的完整代码,再给你详细拆解修改要点:

修复后的完整代码

import urllib.parse
import requests

# 替换成你的Spotify开发者凭证
CLIENT_ID = "your_client_id_here"
CLIENT_SECRET = "your_client_secret_here"

# 获取访问令牌
auth_url = "https://accounts.spotify.com/api/token"
auth_response = requests.post(auth_url, {
    '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': f'Bearer {access_token}'
}

# 搜索艺术家的核心逻辑
BASE_URL = 'https://api.spotify.com/v1/'
artist_name = input("Give artist name: ")
# 对艺术家名称进行URL编码,避免特殊字符导致的链接无效
encoded_artist_name = urllib.parse.quote(artist_name)

# 正确构造搜索请求
r = requests.get(
    BASE_URL + 'search',
    headers=headers,
    params={
        'q': encoded_artist_name,
        'type': 'artist',  # 指定搜索类型为艺术家
        'limit': 50
        # 如果需要筛选艺术家类型,可以添加 'include_groups': 'solo,duo' 这类参数
    }
)

# 打印请求URL方便调试
print("Request URL:", r.url)

# 解析响应数据
response_data = r.json()
# 检查响应是否成功
if 'error' in response_data:
    print(f"API Error: {response_data['error']['message']}")
else:
    print("\nMatching Artists:")
    # 正确的结果路径是 artists -> items
    for artist in response_data['artists']['items']:
        # 处理 genres 为空的情况,避免索引错误
        genres = ', '.join(artist['genres']) if artist['genres'] else 'No genres listed'
        print(f"{artist['name']} --- {genres}")

关键修改要点

  • 修正API请求路径:Spotify的搜索API路径是/v1/search,不需要把艺术家名称和artists拼在路径里,而是通过type参数指定搜索类型为艺术家。你之前的路径构造完全不符合API文档规范,这是导致链接无效的核心原因。
  • URL编码搜索关键词:用户输入的名称可能包含空格(比如"Taylor Swift")或特殊字符,直接拼入URL会破坏链接结构,用urllib.parse.quote()编码后才能保证请求有效。
  • 调整请求参数:搜索关键词必须放在q参数中,同时指定type=artist来过滤结果。原来的include_groups参数是可选的,用来筛选艺术家的组合类型(比如solo、乐队等),不是必填项。
  • 修正响应数据解析:Spotify搜索接口的响应是按类型分组的,艺术家结果嵌套在response_data['artists']['items']里,而不是直接的items,之前的写法会导致KeyError。另外添加了错误处理,方便排查API返回的问题。
  • 优化代码可读性:用f-string简化了Authorization头的拼接,同时处理了艺术家流派为空的情况,避免程序崩溃。

内容的提问来源于stack exchange,提问作者Dynax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 14:02:38