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

如何获取Spotify平台特定年份发布的全部曲目?

获取Spotify指定年份全量曲目的可行方案

核心思路:通过分页迭代+多维度覆盖突破限制

Spotify API没有直接获取某年份所有曲目的接口,且单请求最多返回50条结果,但可以通过以下方式批量累积数据:

  • 基于搜索接口的分页遍历
    用搜索接口的year:YYYY或release_date:YYYY过滤条件,配合offset参数实现分页查询,循环调用直到返回结果为空,就能累积该年份的曲目。
    示例Spotipy代码:

    import spotipy
    from spotipy.oauth2 import SpotifyClientCredentials
    import time
    
    sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(
        client_id="你的Client ID",
        client_secret="你的Client Secret"
    ))
    
    target_year = 2018
    all_tracks = []
    offset = 0
    
    while True:
        res = sp.search(q=f"year:{target_year}", type="track", limit=50, offset=offset)
        tracks = res['tracks']['items']
        if not tracks:
            break
        all_tracks.extend(tracks)
        offset += 50
        time.sleep(0.5)  # 加延迟避免触发速率限制
    
    # 按track.id去重
    unique_tracks = list({track['id']: track for track in all_tracks}.values())
    print(f"共获取{len(unique_tracks)}首{target_year}年的唯一曲目")
    
  • 结合专辑维度补充数据
    部分曲目可能因搜索排序靠后难以通过分页触达,可先遍历指定年份的专辑,再提取每张专辑的所有曲目:

    1. 分页获取指定年份的专辑(type="album")
    2. 对每个专辑ID调用album_tracks接口提取曲目
    3. 同样通过track.id去重,与搜索接口的结果合并
  • 处理API速率限制
    若遇到429错误(请求超限),需实现指数退避:读取响应头的Retry-After值,等待对应时长后重试,避免被临时封禁。

关键注意点

  • 必须通过track.id去重,同一曲目可能出现在多张合辑、专辑中
  • 使用Client Credentials授权流即可,无需用户登录授权
  • Spotify曲库动态更新,无法保证100%覆盖所有历史曲目,但两种方式结合可覆盖绝大多数内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:15:40