Сканирование iTunes библиотеки? - PullRequest
1 голос
/ 03 сентября 2011

Я работаю над приложением Mac, и оно мне нужно для сканирования пользовательской библиотеки iTunes. Есть идеи, как мне поступить? Приложение будет сканировать библиотеку в поисках различных атрибутов песни.

1 Ответ

7 голосов
/ 03 сентября 2011

Чтобы узнать фактическое последнее местоположение библиотеки iTunes (и не надеяться, что она будет в расположении по умолчанию), прочитайте свойство iTunesRecentDatabases или iTunesRecentDatabasePaths из ~/Library/Preferences/com.apple.iApps.plist.

NSArray *libraryDatabases = [[[NSUserDefaults standardUserDefaults] persistentDomainForName:@"com.apple.iApps"] objectForKey:@"iTunesRecentDatabases"];
NSURL *libraryURL = (([libraryDatabases count])) ? [NSURL URLWithString:[dbs objectAtIndex:0]] : nil;
* 1006.* Для более продвинутого фрагмента кода ищите parserInstancesForMediaType: в iMedia * IMBiTunesParser.m

Для фактического анализа базы данных рекомендуется использоватьсинтаксический анализатор SAX, такой как NSXMLParser (по сравнению с синтаксическим анализатором дерева, например NSXMLDocument или, что еще хуже: NSPropertylistSerialization), поскольку у некоторых пользователей есть библиотеки, содержащие до, а иногда и более 100 000 треков.Использование синтаксического анализа дерева или даже сериализации серьезно замедлит работу и может временно заблокировать ваше приложение.

...