众所周知,Apple 在 macOS Catalina 中放弃了 iTunes。我使用 Logitech Music Server 来驱动我的 Transporter(一种联网音乐播放器),用于我的家庭音乐系统。
Logitech Music Server 有一个 Python 脚本,可将 iTunes 的音乐库解析到其内部 SQL 数据库中。Apple Music 不再使用 XML 文件,但它确实有一个名为的文件Library.musicdb
(位于文件/包内/Users/[username]/Music/Music/Music Library.musiclibrary
),该文件完全是二进制文件,除了标题之外,它是hfma
。
我想编写一个替代工具来获取该.musicdb
文件并填充 Logitech Media Server 的数据库,但要做到这一点,我需要有关此文件的更多信息。这有记录吗?更好的是,是否有访问它的工具?
答案1
有一个框架叫iTunes 资料库可以读取Music.app
数据库 - 刚刚在 macOS Catalina 上测试过 - 但它是一个 Objective-C 数据库。
您可以通过以下方式使用它类库,但只有当应用程序代码签名(请参阅页面底部的黄色警告)。
你可以在 Objective-C 中编写类似这样的代码来访问该库:
objective-c
#import <iTunesLibrary/ITLibrary.h>
NSError *error = nil;
ITLibrary *library = [ITLibrary libraryWithAPIVersion:@"1.1" error:&error];
if (library)
{
NSArray *playlists = library.allPlaylists; // <- NSArray of ITLibPlaylist
NSArray *tracks = library.allMediaItems; // <- NSArray of ITLibMediaItem
}
API 版本1.1
似乎是为Music.app
,而1.0
应该是iTunes
。
答案2
虽然 Apple Music 不会自动生成库 XML 文件,但可以在应用程序本身中手动完成。
我意识到这个疑问是关于实际数据库的格式Music Library.musiclibrary
— — 了解这一点会很酷 — — 您可以按照以下步骤手动导出一个 XML 文件 — — 我假设 — — 它与旧的 iTunes XML 文件格式完全相同。
首先,打开音乐应用程序,转到“文件”菜单并选择“库”选项。
然后,在该列表中有两个选项:“导出库”和“导出播放列表”。在这个例子中,我选择“导出播放列表”。
完成后,您将看到一个相当标准的 Apple 文件保存/加载界面,用于保存“Library.xml”文件,然后就可以了!
虽然它肯定不如以前在 iTunes 中不断生成的方式那么方便,但我相信这对于需要 XML 文件的应用程序来说应该很好用。
程序员的尖刻评论/批评:为什么没有 JSON 格式的导出选项?让用户根据需要选择 XML 或 JSON,因为说实话,在 2019 年没人喜欢处理 XML。但我离题了……