【发布时间】:2012-10-16 22:49:32
【问题描述】:
我可以将 iTunes 中曲目上的用户 cmets 输入到我的 App 中吗?
【问题讨论】:
我可以将 iTunes 中曲目上的用户 cmets 输入到我的 App 中吗?
【问题讨论】:
从您的 cmets 看来,您实际上不是在 Mac 上,而是在 iOS 上,而且您实际上并不是在尝试从 iTunes 访问 cmets,而是从 iOS 音乐库。
如果是这样:
NSString *comments = [currentItem valueForProperty:MPMediaItemPropertyComments];
这将为您提供 iOS 音乐库中的 cmets。但是,不能保证设备会同步从 iTunes 同步的任何曲目(或从商店购买,或从 Match 下载),因此您很可能一无所获。在这种情况下,你无能为力。
您无法直接从 iTunes 获取 cmets,因为您没有连接到 iTunes。
【讨论】:
你的问题很模糊。
在 Mac 上,用户 cmets 可用作任何 track 对象上的 comment 属性。在 Windows 上,它们可作为任何 IITTrack 对象上的 Comment 方法的结果使用。
所以,假设您已经知道如何访问曲目:
AppleScript:
comment of theTrack
Mac 上带有 ScriptingBridge 或 appscript 的 Python:
theTrack.comment()
Windows 上带有 PyCOM 的 Python:
theTrack.Comment()
带有 ScriptingBridge 或 appscript 的 ObjC:
[theTrack comment];
等等。
如果您不知道如何访问曲目,则需要比这更基本的帮助(您需要告诉我们您使用的是 Windows 还是 Mac,您要使用哪种语言和库等) ,但这里有一个完整的 py-appscript 示例,它打印出库中每个轨道的 cmets:
from appscript import *
print('\n'.join(app('iTunes').tracks.comment()))
如果您不是在编写 iTunes 脚本,而是在解析其 XML 库 plist 文件,则每个曲目都是 dict 下的 Tracks。如果轨道有用户 cmets,它们是带有键 Comments 的字符串。同样,如果您还不知道如何解析这个 XML 文件,那么您就会遇到更基本的问题。但这里又是一个简单的例子:
from Foundation import NSDictionary
d = NSDictionary.dictionaryWithContentsOfFile_('/Users/me/Music/iTunes/iTunes Library.xml')
print('\n'.join(t.get('Comments', '') for t in d['Tracks'].values()))
【讨论】:
MPMediaItem 这样的类。有这样一个类是 iOS,但在 iOS 中没有 iTunes 之类的东西(嗯,有,但它是商店应用程序而不是播放器),并且您明确表示您使用的是 Mac。因此,您尝试做的事情甚至没有意义。如果你的意思不是你说的,请看我的另一个答案。