【问题标题】:Scan iTunes Library?扫描 iTunes 资料库?
【发布时间】:2011-09-02 23:46:10
【问题描述】:

我正在开发一个 Mac 应用程序,我需要它来扫描用户的 iTunes 库。知道我会怎么做吗?该应用程序将扫描库以查找不同的歌曲属性。

【问题讨论】:

  • Itunes 库创建一个包含所有歌曲详细信息的 xml,尝试解析它!
  • 这应该可以解决问题!谢谢您的帮助。无论用户将 iTunes 资料库存储在何处,您是否知道我可以找到该 XML 文件的方法?

标签: objective-c cocoa itunes


【解决方案1】:

要查找 iTunes 库的实际最新位置(而不希望它位于默认位置),请从 ~/Library/Preferences/com.apple.iApps.plist 读取 iTunesRecentDatabasesiTunesRecentDatabasePaths 属性。

NSArray *libraryDatabases = [[[NSUserDefaults standardUserDefaults] persistentDomainForName:@"com.apple.iApps"] objectForKey:@"iTunesRecentDatabases"];
NSURL *libraryURL = (([libraryDatabases count])) ? [NSURL URLWithString:[dbs objectAtIndex:0]] : nil;

要获得更高级的代码 sn-p 在 iMediaIMBiTunesParser.m

中查找 parserInstancesForMediaType:

对于实际的数据库解析,建议使用 SAX 解析器,例如 NSXMLParser(相对于树解析器,例如 NSXMLDocument 或更糟:NSPropertylistSerialization),因为有些用户的库最多有时甚至超过 100,000 多首曲目。使用树解析甚至序列化会严重减慢并可能暂时阻止您的应用。

【讨论】:

  • 这是更安全的方式,感谢Regexident的新知识。 +1。
  • @krio:如果答案解决了您的问题,请单击答案旁边的绿色复选框以标记您的问题已解决。这使得其他人更容易在 StackOverflow 上搜索正确的解决方案。同时,欢迎您在 StackOverflow 度过愉快的时光! :)
  • 我希望我能 Regexident,而且我在提问时总是这样做。但是这个问题是 Sam 提出的。大声笑但是我投票给你。
  • 感谢您的回答!这正是我需要知道的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多