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

如何在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

问题分析与修正

  1. 搜索查询语法错误:Spotify API的搜索参数q不支持用&分隔条件,正确的多条件格式是用空格分隔,年份过滤的语法是year:YYYY。所以搜索语句需要改成:

    search_query = f"{random_word} year:{year}"
    
  2. print语句格式错误:原代码最后多传了一个{release_year}参数,导致输出异常,应该把年份整合到格式化字符串里:

    print(f"Track: {track_name}, Artists: {', '.join(artists)}, Release Date: {release_date}, Release Year: {release_year}")
    
  3. 可选优化:如果要确保搜索结果的曲目确实是指定年份发行的,可以在循环里增加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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:23:16