为何使用AppleScript向Apple Music资料库加歌会出现容量异常?
AppleScript 实现向Apple Music资料库添加当前播放曲目功能异常
核心问题现象
- 初始脚本通过调用
duplicate方法将当前播放曲目currentTrack复制到Apple Music的Library(资料库)时,资料库存在「现有曲目总数+1」的隐性容量上限 - 每次通过脚本的
duplicate方法添加新曲目后,该容量上限不会同步增长,后续无法继续通过脚本添加新曲目;仅当删除资料库内任意一个已有条目、释放1个容量位后,才能再添加1首新曲目 - 若通过Apple Music客户端手动向资料库添加曲目,容量上限会正常更新,更新后即可继续通过AppleScript脚本添加曲目
初始实现代码
tell application "Music" set currentTrack to current track duplicate currentTrack to source "Library" end tell
阶段性测试结果
可部分实现需求的JXA代码片段
duplicate方法属于异步操作,执行后仅返回true,不会返回已添加的曲目对象,因此代码中加入delay语句等待操作完成,目前暂未找到更优的同步实现方案- 该片段额外实现了标记曲目为喜爱、修改已添加曲目评分的功能
var music = Application("Music") var app = Application.currentApplication() app.includeStandardAdditions = true var track = music.currentTrack track.loved = true var myLib = music.sources['Library'] track.duplicate({ to: myLib }) delay(4) myLib.tracks().find(t => t.name() === track.name() && t.artist() === track.artist()).rating = 100
JXA代码的场景限制
- 上述JXA代码存在适用场景边界:通过
Create Station...(创建电台)功能播放曲目时代码失效,仅在播放*浏览(Browse)*板块下任意播放列表内的曲目时可正常运行 - 初步验证规律:只有隶属于播放列表的曲目才能通过该脚本方式添加到
Library中 - 属性对比结果:同一首歌分别在创建电台播放、从其他播放列表播放时,
databaseID和persistentId两类ID属性均不一致,推测该ID差异是导致场景适配异常的核心原因
成因参考
已检索到相关技术博客资料,其中对上述问题的成因有较多对应说明。
内容的提问来源于stack exchange,提问作者KadoBOT
相关产品推荐
相关产品推荐

