如何通过Spotify WebAPI获取与应用一致的用户隐藏曲目专辑内容?
解决Spotify Web API获取用户自定义专辑曲目问题
嘿Uli!我之前也碰到过一模一样的问题,一开始也纳闷为啥API返回的内容和App里显示的不一样,搞清楚背后的逻辑后就好办多了。
首先得明确一个核心逻辑:你在Spotify App里点击“-”移除的曲目,本质是把这首单曲从你的个人音乐库中移除,而不是修改专辑本身的内容——Spotify的专辑元数据是全局统一的,所以直接调用GET /albums/{id}/tracks肯定会返回专辑的全部原始曲目。
要实现和App一致的效果,你需要分三步来处理:
- 第一步:调用
GET /me/tracks端点获取你个人库中所有已保存的单曲列表。注意这个接口是分页的,你需要处理返回结果里的next字段来获取完整的列表。 - 第二步:调用
GET /albums/{id}/tracks获取目标专辑的全部曲目。 - 第三步:在客户端做过滤,只保留专辑曲目中id存在于你个人已保存单曲列表里的那些条目。
给你举个简单的逻辑伪代码示例:
# 假设你已经获取到了用户已保存曲目的id集合 saved_track_ids = {track['id'] for track in saved_tracks} # 获取专辑的所有曲目 album_tracks = get_spotify_album_tracks(album_id) # 过滤出用户保留的曲目 user_customized_tracks = [track for track in album_tracks if track['id'] in saved_track_ids]
这样处理后得到的user_customized_tracks就和你在Spotify App里看到的专辑内容完全一致了。目前Spotify Web API还没有提供直接返回用户自定义专辑内容的端点,所以这种客户端过滤是最直接的解决方案。
内容的提问来源于stack exchange,提问作者Uli
相关产品推荐
相关产品推荐

