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

如何通过Spotify Web API获取已登录用户的收听时长?

获取Spotify已登录用户收听时长的可行方案

我之前也碰到过这个棘手的问题——Spotify官方文档确实没提供直接获取收听时长的接口,但通过组合现有API完全能实现,那些已经做出来的网站也是用类似思路:

  • 别再盯着top items了:就像你发现的,top tracks/artists只返回用户的热门内容,既没有播放次数,还最多只能拿50条数据,根本没法用来计算准确的收听时长。
  • 核心思路:用播放历史API:关键是调用 GET /v1/me/player/recently-played 接口,这个接口能拿到用户的最近播放记录,是计算时长的基础。

具体操作步骤如下:

  1. 申请必备的授权权限
    你的应用必须获得 user-read-recently-played 这个OAuth scope的授权,这是访问用户播放历史的前提,在授权流程里一定要加上这个权限。

  2. 分页拉取完整的播放历史
    这个接口默认返回20条记录,通过 limit=50 参数可以一次获取最多50条。要拿到更早的记录,就用 after 参数(传入上一轮请求里最早的那条记录的 played_at 毫秒时间戳)来分页请求,直到接口返回空数据,这样就能获取到所有可用的播放历史。

  3. 计算单条记录的实际收听时长
    每条播放记录里包含曲目的总时长(track.duration_ms)和播放时间(played_at)。判断实际收听时长的逻辑:

    • 对比当前记录和下一条记录的played_at时间差:如果这个差值小于曲目总时长,说明用户中途切歌了,实际收听时长就取这个时间差。
    • 如果是最后一条记录,或者时间差大于等于曲目总时长,就默认用户完整听完了这首歌,用track.duration_ms作为收听时长。
  4. 累加得到总收听时长
    把所有单条记录的实际收听时长加起来,就是用户的总收听时长了。

另外要提醒的是,Spotify的API对播放历史的保留时间有限制(一般是最近几个月),如果要获取更长期的历史,可能需要引导用户去账号设置里的「下载你的数据」功能手动导出扩展播放历史,再做离线解析,但这属于额外的离线处理范畴了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:57:42