如何通过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
相关产品推荐
相关产品推荐

