【问题标题】:Appscript v/s Scripting Bridge v/s Custom AppleScriptApps Script vs Scripting Bridge vs Custom AppleScript
【发布时间】:2014-08-13 14:57:06
【问题描述】:

我希望通过我的 ruby​​ 脚本访问 iTunes 应用程序并查看所有 3 个,我很困惑我应该选择哪一个。似乎不再支持 Appscript http://appscript.sourceforge.net/ 因此我正在考虑将其从我的选项列表中删除。我留下了 Scripting Bridge 和自定义 AppleScript(制作我自己的脚本)。

在网上阅读了关于缺陷和糟糕的文档后,我很困惑我应该从哪个开始?

有经验的用户请建议哪个可能是最好的,或者是否有任何其他可能有用的脚本。

谢谢!

【问题讨论】:

    标签: ios ruby applescript itunes scripting-bridge


    【解决方案1】:

    我已经完成了所有三个操作,但使用 Objective C 作为调用语言,而不是 ruby​​。

    AppleScript。您可以使用 osascript 从 ruby​​ 编写和调用 AppleScript。 AppleScript 在使用 AppleScript Editor 进行交互式开发方面有很好的支持。这很好用。但是...通过osascript 打电话很麻烦,而且每次与iTunes 通话时都会调用一个额外的过程。您还必须解析 osascript 的输出——这没什么大不了的,但肯定会让您远离真正想做的事情。

    脚本桥。剩下的就是 Scripting Bridge 和 appscript。 Scripting Bridge 的好处是成为 Apple 支持的官方代码。 Scripting Bridge 有它的缺点,但它确实有效,而且工具支持很好。但是,我不知道您如何将它与 ruby​​ 集成——其他人可能想在那里发表评论。

    应用脚本。 Appscript 具有良好的文档和强大的代表作为出色的桥接解决方案。 Matt Neuberg 已将 appscript 移至 github (https://github.com/mattneub/appscript),其明确目标是使用该项目的 ruby​​ 部分。另一个分支 (https://github.com/abarnert/appscript/network) 添加了进一步的修复,这就是我要开始的地方。我本人 (https://github.com/poulsbo/appscript) 已经更新了 Objective-C(大约是 Xcode 6 beta 5),但我还没有接触到 ruby​​ 方面。

    Scripting Bridge 与 appscript。从用户的角度来看,我注意到 appscript 和 Scripting Bridge 之间的一个区别是 appscript 更明确(好)但也更冗长(不好)。这是获取对象的name 属性的示例(伪Obj C);你明确地做了一个getsend

    id result = [[[appscriptObject name] get] send];
    

    而在 Scripting Bridge 中存在隐式惰性求值,因此看起来更像:

    id result = [sbObject name];
    

    在生成的标头中,类型信息也有不同的处理方式。我相信 Scripting Bridge 保留了更好的类型信息。

    Appscript 在错误处理方面似乎更好,例如告诉你什么时候不可用。使用 Scripting Bridge,您似乎无论如何都得到了一个对象,并且在使用它时,您必须事后查询它以查看 lastError 是什么。我觉得这种编码模式很丑。

    向后看? 话虽如此,正如您所指出的,问题在于 appscript 可能最好被视为“向后技术”。如果您采用它,您正在考虑自己支持/修复 appscript 中的任何问题,或者依赖其他人的修复。尽管它今天似乎运行良好(OS X 10.9),但在未来你可以预期它会损坏或需要进一步维护以保持运行。另一方面,由于您有源代码,您可以自行解决问题。 Scripting Bridge 中的错误将无法控制。

    如果您想扭转局面并向前看,您可能想看看 Apple 为 Yosemite 做了什么,将 JavaScript 作为新的 OSA 语言。但是,这偏离了您最初的问题,即关于 ruby​​ 和 iTunes。

    底线。这里有各种权衡。

    AppleScript。安全起见。

    脚本桥。一个不错的中间地带?但不确定如何从 ruby​​ 使用。

    应用脚本。适合业余爱好者/DIY 人士。

    JavaScript。对于早期采用者。

    【讨论】:

    • 太棒了!感谢您为我输入这个 Poulsbo!我认为 Scripting Bridge 适用于 Ruby 脚本。我确实在网上看到了一些关于它的例子。我现在想先尝试一下,然后再考虑使用 AppleScript 路线。无论我要编写什么逻辑,都将在调度程序上执行,即它每天也可以运行大约 100 次。如果我使用 AppleScript,我会担心脚本的性能。
    【解决方案2】:

    我刚刚碰到这个话题。我正在使用 10.11 (El Capitan) 并想从 ruby​​ 访问 iTunes。我想避免使用 osascript。

    Scripting Bridge 正式不再支持 ruby​​(在 apple.com 的某个地方阅读),并且不包含在 10.10 和 10.11 中。对我来说唯一的选择是 rb-appscript gem。但是它不适用于 Ruby 2.2.1。我需要在github 关注这篇文章,现在它运行良好。

    希望对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多