macOS Catalina 中使用的 Apple Music“Library.musicdb”的格式/模式是否有记录?

macOS Catalina 中使用的 Apple Music“Library.musicdb”的格式/模式是否有记录?

众所周知,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。但我离题了……

相关内容