如何使用requests库按艺人名称搜索Spotify歌曲并设置结果限制
使用requests库搜索Spotify平台指定艺人的曲目
完全可以通过requests库调用Spotify的Search API实现按艺人名称搜索曲目,以下是基于你已完成的认证代码的完整实现:
import requests client_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx' client_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx' auth_url = 'https://accounts.spotify.com/api/token' data = { 'grant_type': 'client_credentials', 'client_id': client_id, 'client_secret': client_secret, } auth_response = requests.post(auth_url, data=data) access_token = auth_response.json().get('access_token') base_url = 'https://api.spotify.com/v1/search' headers = { 'Authorization': 'Bearer {}'.format(access_token) } artist_name = "John" limit = 10 # 设置你想要的结果数量 # 构造搜索参数 params = { 'q': f'artist:{artist_name}', 'type': 'track', 'limit': limit } # 发送搜索请求 search_response = requests.get(base_url, headers=headers, params=params) search_results = search_response.json() # 提取并打印曲目信息 if 'tracks' in search_results and 'items' in search_results['tracks']: tracks = search_results['tracks']['items'] print(f"找到{len(tracks)}首{artist_name}的曲目:") for idx, track in enumerate(tracks, 1): track_name = track['name'] album_name = track['album']['name'] artists = ', '.join([art['name'] for art in track['artists']]) print(f"{idx}. {track_name} - {artists} | 专辑:{album_name}") else: print("未找到相关曲目或请求失败")
关键说明:
- 搜索参数构造:
q参数使用artist:{artist_name}语法,精准限定搜索指定艺人的曲目;type设为track确保返回结果是曲目而非艺人或专辑;limit控制返回的最大结果数(Spotify API允许的最大值为50)。 - 响应处理:API返回的结果中,曲目信息嵌套在
tracks->items路径下,可从中提取曲目名称、所属艺人、专辑等核心信息。 - 基础容错:代码中加入了结果存在性判断,避免因请求失败或无匹配结果导致的报错。
内容的提问来源于stack exchange,提问作者Tonin thomas
相关产品推荐
相关产品推荐

