如何在Python中为Spotify API查询设置双条件(随机词+指定年份)
Spotify API多条件搜索问题修复
你要实现的是用随机关键词+指定年份的组合条件调用Spotify API搜索曲目,但当前代码无法正常运行,问题主要出在搜索查询语法错误和输出格式错误上,以下是具体修正方案:
原问题代码
get_valid = False # Initialize while get_valid == False: random_word = "random" year = "2010" # Search for tracks search_query = f"{random_word}&year:{year}" results = sp.search(q=search_query, type='track', limit=10) # Print the track names and artists for track in results['tracks']['items']: track_name = track['name'] artists = [artist['name'] for artist in track['artists']] release_date = track['album']['release_date'] release_date_split = release_date.split("-") if len(release_date_split) == 3: release_year = release_date_split[0] release_month = release_date_split[1] print(f"Track: {track_name}, Artists: {', '.join(artists)}, Release Date: {release_date}", {release_year}) song_title = track_name get_valid = True
问题分析与修正
搜索查询语法错误:Spotify API的搜索参数
q不支持用&分隔条件,正确的多条件格式是用空格分隔,年份过滤的语法是year:YYYY。所以搜索语句需要改成:search_query = f"{random_word} year:{year}"print语句格式错误:原代码最后多传了一个
{release_year}参数,导致输出异常,应该把年份整合到格式化字符串里:print(f"Track: {track_name}, Artists: {', '.join(artists)}, Release Date: {release_date}, Release Year: {release_year}")可选优化:如果要确保搜索结果的曲目确实是指定年份发行的,可以在循环里增加
release_year == year的判断,避免API返回结果有偏差。
修正后的完整代码
get_valid = False # Initialize while get_valid == False: random_word = "random" year = "2010" # 修正搜索查询格式 search_query = f"{random_word} year:{year}" results = sp.search(q=search_query, type='track', limit=10) # 遍历搜索结果 for track in results['tracks']['items']: track_name = track['name'] artists = [artist['name'] for artist in track['artists']] release_date = track['album']['release_date'] release_date_split = release_date.split("-") if len(release_date_split) == 3: release_year = release_date_split[0] release_month = release_date_split[1] # 增加年份判断确保结果符合要求 if release_year == year: print(f"Track: {track_name}, Artists: {', '.join(artists)}, Release Date: {release_date}, Release Year: {release_year}") song_title = track_name get_valid = True
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

