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

Dyl*_*mee 6 itunes database macos macos-catalina

众所周知,苹果在 macOS Catalina 上放弃了 iTunes。我使用罗技音乐服务器来驱动我的家庭音乐系统的 Transporter(网络音乐播放器)。

\n\n

Logitech 音乐服务器有一个 Python 脚本,可以将 iTunes 的音乐库解析到其内部 SQL 数据库中。Apple Music 不再使用 XML 文件,但它Library.musicdb在文件/包 \xe2\x80\x94 中确实有一个名为 \xe2 /Users/[username]/Music/Music/Music Library.musiclibrary\x80\x94 的诱人文件,该文件完全是二进制的,除了标头(其为hfma.

\n\n

我想编写一个替换工具来获取该.musicdb文件并填充 Logitech Media Server 的数据库,但为此,我需要有关该文件的更多信息。这有记录在任何地方吗?更好的是,有访问它的工具吗?

\n

小智 5

有一个名为iTunesLibrary的框架可以读取Music.app的数据库 - 刚刚在 macOS Catalina 上测试过 - 但它是一个 Objective-C 框架。

您可以通过PyObjC使用它,但只有在应用程序经过代码签名时它才有效(请参阅页面底部的黄色警告)。

你可以在 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
}
Run Code Online (Sandbox Code Playgroud)

API版本1.1似乎是for Music.app,而1.0应该是for iTunes

  • (仅关于 Obj-C。)这是不准确的。截至 2020 年 4 月 24 日,这些 API 可在 Swift 中使用。我刚刚在 macOS Catalina 上的 Xcode 11.4.1 中尝试过。 (2认同)