能否通过通用Python脚本调用API访问Apple Music库并创建播放列表?
在Python中创建Apple Music个人库播放列表的可行方案
可以实现需求,核心是手动完成Apple Music API的OAuth2授权流程获取Music User Token,再直接调用官方API操作个人库资源,具体步骤如下:
1. 准备Apple Developer账号与配置
- 注册并登录Apple Developer账号,创建新的App ID,开启「Music Services」权限
- 在「Certificates, Identifiers & Profiles」中为该App ID配置「Sign In with Apple」和「Apple Music API」权限
- 创建「Services ID」,设置授权回调URL(本地开发可使用
http://localhost:8080/callback) - 生成客户端密钥(.p8格式文件),用于后续令牌交换操作
2. 实现OAuth2授权流程获取Music User Token
Apple Music API采用OAuth2授权码流程,需手动完成用户授权:
- 构造授权URL,指定
response_type=code、client_id、redirect_uri,以及权限scope=library-read-write(读写个人库所需) - 用浏览器打开该URL,登录你的Apple Music账号并完成授权,回调后会得到授权码
- 携带授权码、客户端ID、客户端密钥,向
https://appleid.apple.com/auth/token发送POST请求,交换得到**访问令牌(即Music User Token)**和刷新令牌 - 访问令牌有效期约1小时,到期后用刷新令牌重新获取新的访问令牌即可继续操作
3. 调用API创建并填充个人库播放列表
拿到有效令牌后,直接发送HTTP请求调用官方API:
- 创建播放列表:发送POST请求到
https://api.music.apple.com/v1/me/library/playlists- 请求头:
Authorization: Bearer {你的Music User Token},Content-Type: application/json - 请求体示例:
{ "attributes": { "name": "迁移自Amazon的播放列表" } }
- 请求头:
- 解析本地文本文件的歌曲列表,通过搜索API匹配Apple Music资源:发送GET请求到
https://api.music.apple.com/v1/catalog/{地区码}/search,携带参数term=歌曲名 歌手名、types=songs - 将匹配到的歌曲添加到新建播放列表:发送POST请求到
https://api.music.apple.com/v1/me/library/playlists/{播放列表ID}/tracks,请求体包含歌曲ID数组
4. 注意事项
- 搜索时需指定与你Apple Music账户对应的地区码(如
cn、us),确保结果准确 - 对搜索不到的歌曲,建议记录到日志文件中后续手动补充
- 务必做好令牌刷新逻辑,避免每次运行都需要重新授权
虽然apple-music-python库不支持库资源操作,但官方Apple Music API本身完全支持个人库的播放列表创建与修改,只需手动封装HTTP请求即可实现需求。
内容的提问来源于stack exchange,提问作者kaltorak




