代码之家  ›  专栏  ›  技术社区  ›  jldupont

iTunes苹果事件API

  •  2
  • jldupont  · 技术社区  · 15 年前

    我想通过objective-c来控制itunes(我只是无法获得python appscript 在我的OS/X 10.6.3系统上正确安装…那将是我的第一选择)。

    据我所知,可可的ipc是基于 苹果事件 :是否有:

    1. 关于iTunes/Apple事件API的在线文档?
    2. iTunesAPI的透视机制?

    我知道applescript编辑器/打开字典的功能,但我不知道如何 翻译 我在ipc调用中看到的信息。

    注: 我已经试过通过 小精灵 但我追求的主要功能是 轨迹搜索 我想不出来。

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

    2 回复  |  直到 15 年前
        1
  •  11
  •   Michael Tsai    15 年前

    你考虑过用 Scripting Bridge ?它内置于操作系统中,还可以与pyobjc一起工作。没有明显的搜索api,因为搜索是内置在applescript中的( whose clauses ,它映射到脚本桥中的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)>
    

    另外,如果您是applescript新手,我强烈推荐脚本调试器 dictionary explorer .

        2
  •  3
  •   has    15 年前

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

    api文档可通过os x的applescript编辑器(file>open dictionary)、appscript的asdictionary或其他第三方编辑器获得。如果安装了asdictionary,还可以使用appscript的内置帮助()方法以交互方式浏览字典。

    但是,众所周知,可编写脚本的应用程序的api文档是不充分的,因此,很好地理解applescript的一般工作方式和应用程序脚本的特殊工作方式也是必要的。苹果自己的 AppleScript Language Guide 描述了所涉及的各种功能,但并没有说明如何将它们实际应用;如果您愿意花一些钱,可以使用一些好书(免责声明:我刚刚自己联合编写了一本)。

    并期望通过网络文章、讨论论坛和现有脚本做大量的挖掘来寻找线索。 Doug's AppleScripts for iTunes 是iTunes脚本的重要来源。当然,它们是用applescript编写的,但其中许多可以在applescript编辑器中阅读,因此是一个很好的提示来源,如果您使用appscript,则可以使用astranslate将applescript语法转换为appscript语法,作为编写自己的语法的起点。