5

在 Cocoa 应用程序中,我正在寻找一种解决方案来从 iTunes 中检索专辑插图,而无需启动 iTunes 本身并在后台运行。

通常且可能是唯一的解决方案 Scripting Bridge 和固有的 AppleScript 将在执行任何命令之前启动 iTunes。

专辑封面是唯一无法通过解析获得的信息iTunes Library.xml。对于给定的曲目,iTunes 以下列方式混淆艺术作品的存储:~/{Library Path}/Album Artwork/Cache/D989408F65D05F99/04/13/04/D989408F65D05F99-EB5B7A9086F4B4D4.itc.

有人知道在不启动 iTunes 的情况下获取专辑封面的技术吗?我总是可以走不同的路线,比如使用亚马逊的数据服务,但我更喜欢基于本地 iTunes 的解决方案。

4

3 回答 3

6

文件名是库 ID (D989408F65D05F99) 和曲目 ID (EB5B7A9086F4B4D4) 的组合。目录结构来自图书馆ID和曲目ID的后三位转换为十进制,即4D4变为04、13、04。

.itc 文件似乎具有 RIFF/chunked 类型结构。这里有一些关于文件结构的内容。

于 2009-09-16T14:50:15.937 回答
2

iTunes 11+ (macOS 10.13+) 引入了具有此功能的 iTunes Library Framework,您无需再解析 iTunes Library.xml 或读取曲目的存储文件夹

于 2018-11-12T10:05:52.810 回答
0

ITLibrary 框架有一个功能(链接):

(ITLibArtwork *)artworkForMediaFile:(NSURL *)mediaFileURL;

您将需要您想要获得艺术品的轨道的位置。

如果您有PersistentID,那么您必须查询库以获取 ITMediaItem,然后访问其位置属性。

或者,如果您已经拥有,现在您可以通过检查属性ITMediaItem获得其艺术品 1st 。artworkAvailable

如果是,则获取其艺术品属性,该属性属于ITLibArtworkClass。有关该课程的更多信息,请参见此处

于 2021-09-08T09:41:59.220 回答