Apps Script vs Scripting Bridge v / s自定义AppleScript

时间:2014-08-13 14:57:07

标签: ios ruby applescript itunes scripting-bridge

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

在网上阅读了关于缺陷和不良文档的内容之后,我对哪些应该从哪个开始感到困惑?

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

<强>的AppleScript 即可。您可以使用osascript从ruby编写和调用AppleScript。 AppleScript在使用 AppleScript编辑器的交互式开发方面提供了很大的支持。这非常有效。但是......通过osascript进行呼叫很麻烦,而且每次与iTunes通话时都会调用额外的进程。你还必须解析osascript的输出 - 这不是什么大不了的事,但肯定会让你远离你真正想做的事情。

脚本大桥。这留下了Scripting Bridge和appscript。 Scripting Bridge具有Apple官方支持的代码的优点。 Scripting Bridge有它的瑕疵,但它确实有效,并且工具支持很好。但是,我不知道你是如何将它与ruby集成的 - 其他人可能想在那里发表评论。

<强> appscript 即可。 Appscript拥有优秀的文档和强大的代表作为卓越的桥接解决方案。 Matt Neuberg已将appscript移至github(https://github.com/mattneub/appscript),明确的目标是使用该项目的ruby部分。另一个fork(https://github.com/abarnert/appscript/network)添加了进一步的修复,就是我要开始的地方。我自己(https://github.com/poulsbo/appscript)已经使Objective-C更新了(大约Xcode 6 beta 5),但我还没有触及ruby方面。

脚本大桥与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中的任何问题,或依赖其他人的修复。虽然它今天似乎运行良好(OS X 10.9),但未来你可以预期它会中断或需要进一步维护才能保持运行。另一方面,由于您拥有源代码,因此可以自行修复问题。 Scripting Bridge中的一个错误将无法完成。

如果您想要翻转它并向前看,您可能想要查看Apple使用JavaScript作为新的OSA语言为Yosemite做些什么。然而,这远离了你原来的问题,这是关于ruby和iTunes。

底线。此处有各种权衡。

AppleScript的。安全地玩。

脚本桥。一个不错的中间地带?但不确定如何使用红宝石。

appscript。对于业余爱好者/ DIY人。

的JavaScript。对于早期采用者。

答案 1 :(得分:1)

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

脚本桥正式用于ruby(在apple.com中的某处读取)并且未包含在10.10和10.11中。对我来说唯一的选择是rb-appscript gem。但它不适用于Ruby 2.2.1。我需要在github关注这篇文章,现在它完美无缺。

希望它会帮助某人。