Objective c iTunes苹果事件API

Objective c iTunes苹果事件API,objective-c,macos,itunes,appleevents,Objective C,Macos,Itunes,Appleevents,我想通过Objective-C控制iTunes(我只是无法在我的OS/X 10.6.3系统上正确安装Pythonappscript,这可能是我的第一选择) 从我收集的资料来看,关于可可的IPC是基于苹果事件的:是否有: iTunes/Apple Events API的在线文档 使用iTunesAPI的指令机制 我知道Applescript编辑器/开放式词典功能,但我不知道如何将我看到的信息转换为IPC调用 注意:我已经尝试过通过PyObjC解决方案,但我追求的主要功能是跟踪搜索,我无法理解 免责

我想通过Objective-C控制iTunes(我只是无法在我的OS/X 10.6.3系统上正确安装Python
appscript
,这可能是我的第一选择)

从我收集的资料来看,关于可可的IPC是基于苹果事件的:是否有:

  • iTunes/Apple Events API的在线文档
  • 使用iTunesAPI的指令机制
  • 我知道Applescript编辑器/开放式词典功能,但我不知道如何将我看到的信息转换为IPC调用

    注意:我已经尝试过通过PyObjC解决方案,但我追求的主要功能是跟踪搜索,我无法理解

    免责声明:这里是OS/X超级新手。

    您考虑过使用吗?它内置在操作系统中,也可以与PyObjC一起使用。没有明显的搜索API,因为搜索内置于AppleScript()中,它映射到脚本桥中的NSPredicate

    >>> from Foundation import *
    >>> from ScriptingBridge import *
    >>> itunes = SBApplication.applicationWithBundleIdentifier_(u"com.apple.itunes")
    >>> tracks = itunes.sources()[0].libraryPlaylists()[0].tracks()
    <SBElementArray @0x468a630: every ITunesTrack of ITunesLibraryPlaylist 0 of ITunesSource 0 of application "iTunes" (157)>
    >>> predicate = NSPredicate.predicateWithFormat_(u'artist == "Pink Floyd"')
    >>> tracks.filteredArrayUsingPredicate_(predicate)
    <SBElementArray @0x457b6c0: ITunesTrack whose 'cmpd'{ 'relo':'=   ', 'obj1':'obj '{ 'want':'prop', 'from':'exmn'($$), 'form':'prop', 'seld':'pArt' }, 'obj2':'utxt'("Pink Floyd") } of ITunesLibraryPlaylist 0 of ITunesSource 0 of application "iTunes" (157)>
    
    从基础进口* >>>从ScriptingBridge导入* >>>itunes=SBApplication.applicationWithBundleIdentifier(u“com.apple.itunes”) >>>tracks=itunes.sources()[0]。libraryPlaylists()[0]。tracks() >>>predicate=NSPredicate.predicateWithFormat_uz(u'artist==“Pink Floyd”) >>>tracks.filteredarrayingpredicate(predicate)
    另外,如果您是AppleScript新手,我强烈建议使用脚本调试器。

    如果您在py appscript方面遇到问题,请联系作者(即我)进行故障排除。包括有关正在使用的Python安装、Xcode版本以及问题是否特定于appscript或是否影响所有第三方模块或具有C扩展的第三方模块的信息。另外,如果您使用的是python.org框架构建而不是内置的python,请确保安装了可选的OS X 10.4 SDK

    API文档可通过OS X的AppleScript编辑器(文件>开放字典)、appscript的ASDictionary或其他第三方AS编辑器获得。如果安装了ASDictionary,还可以使用appscript的内置help()方法以交互方式浏览字典

    然而,可编写脚本的应用程序的API文档是出了名的不充分,因此,很好地理解AppleScript和应用程序脚本的工作原理也是必要的。苹果自己的描述了其中涉及的各种功能,但并没有说明如何将它们付诸实际使用;如果你愿意付一些钱,有几本好书可供选择(免责声明:我自己刚刚合著了一本)


    并期望通过在线文章、论坛和现有脚本进行大量挖掘,寻找线索。是iTunes脚本的重要来源。当然,它们是用AppleScript编写的,但其中许多都可以在AppleScript编辑器中阅读,因此是一个很好的技巧来源,如果您使用appscript,您可以使用ASTranslate将AppleScript语法转换为appscript语法,作为编写自己的脚本的起点。

    您好,请使用OS X而不是OS/X。。。这不是OS/2!抱歉,我的评论与此无关,但我无法抗拒:p SB的优势在于它包含在操作系统中;缺点是它不如AppleScript(或appscript)好。你付了钱,选择了。。。顺便说一句,iTunes除了支持
    which
    子句外,还包括一个
    搜索
    命令;哪种方法最适合某项任务取决于你想做什么。e、 g.使用
    子句:
    应用程序('iTunes')。跟踪[its.artist=='Pink Floyd'].name()
    ;使用
    search
    命令:
    app(“iTunes”).library\u播放列表[1]。search(仅搜索=k.artists)
    has:非常感谢!通过这些片段,我开始理解Applescript桥接背后的理念!