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

如何通过Spotify API获取完整收听历史?Spotipy调用遇50首限制

获取Spotify完整个人收听历史的方法

1. 官方数据导出(最靠谱的完整记录)

Spotify本身就提供个人数据导出服务,能拿到所有播放记录,远不止50条。步骤大概这样:

  • 登录Spotify账户设置页
  • 找到「隐私与设置」里的「下载你的数据」选项
  • 勾选「收听历史」相关的数据包提交申请,一般几天内会收到带下载链接的邮件

2. 第三方工具的逻辑

那些第三方工具能拿到更多数据,本质要么是调用了Spotify的用户数据导出接口,要么是通过循环拉取近期记录——但官方的recently-played接口确实有单请求50条的限制,循环请求时每次传入更早的时间戳,不过这种方式最多只能拿到最近几个月的记录,比官方导出的完整度差很多。

3. 用Spotipy拉取更多近期记录

如果想用Spotipy试试拉取近期的更多记录,可以循环调用current_user_recently_played(),每次把上一轮返回的最早播放时间作为before参数传入,直到返回空结果。示例代码:

import spotipy
from spotipy.oauth2 import SpotifyOAuth

sp = spotipy.Spotify(auth_manager=SpotifyOAuth(
    scope="user-read-recently-played",
    client_id="你的客户端ID",
    client_secret="你的客户端密钥",
    redirect_uri="你的重定向URI"
))

all_tracks = []
limit = 50
before_timestamp = None

while True:
    results = sp.current_user_recently_played(limit=limit, before=before_timestamp)
    if not results["items"]:
        break
    all_tracks.extend(results["items"])
    # 更新时间戳为最后一条记录的播放时间
    before_timestamp = results["items"][-1]["played_at"]

print(f"总共拿到 {len(all_tracks)} 条播放记录")

注意:这种方法只能获取Spotify保留的近期记录(通常是几个月内),要拿更早的完整历史,还是得用官方导出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:10:31