Appscript v/s Scripting Bridge v/s Пользовательский AppleScript

Я хочу получить доступ к приложению iTunes через мой скрипт ruby ​​и, глядя на все 3, я не понимаю, к какому из них следует обратиться. Похоже, AppsScript больше не поддерживается http://appscript.sourceforge.net/ поэтому я думаю удалить его из моего списка опций. Я остался со скриптовым мостом и пользовательским AppleScript (создаю свой собственный скрипт).

Прочитав онлайн о недостатках и плохой документации, я запутался, с чего мне начать?

Опытные пользователи, пожалуйста, предложите, какие из них могут быть лучшими, или, если есть другие сценарии, которые могут быть полезны.

Спасибо!

2 ответа

Решение

Я сделал все три, но из Objective C в качестве языка вызова, а не ruby.

AppleScript. Вы можете написать и вызвать AppleScript из ruby, используя osascript, AppleScript имеет большую поддержку в плане интерактивной разработки с использованием AppleScript Editor. Это работает очень хорошо. Но... звонит через osascript это громоздко, и вы вызываете дополнительный процесс каждый раз, когда говорите с iTunes. Вы также должны проанализировать вывод osascript - не большое дело, но определенно уводит вас от того, что вы действительно пытаетесь сделать.

Скриптовый мост. Это оставляет Scripting Bridge и приложение. Преимущество Scripting Bridge заключается в том, что он является официальным кодом, поддерживаемым Apple. У скриптового моста есть свои бородавки, но он определенно работает, а поддержка инструментов хорошая. Тем не менее, я не знаю, как бы вы интегрировали это с ruby ​​- кто-то другой может захотеть прокомментировать.

приложение. AppsScript имеет хорошие документы и сильный представитель в качестве превосходного мостового решения. Мэтт Нойберг перенес appScript на github ( https://github.com/mattneub/appscript), явно с целью использования рубиновой части этого проекта. Другой форк ( https://github.com/abarnert/appscript/network) добавляет дополнительные исправления, и именно здесь я бы начал. Я сам ( https://github.com/poulsbo/appscript) обновил Objective-C (около Xcode 6 beta 5), ​​но я не коснулся рубиновой стороны.

Мост сценариев против приложения. Одно отличие, которое я заметил между appscript и Scripting Bridge, с точки зрения пользователя, состоит в том, что appscript является более явным (хорошим), но также более многословным (не хорошим). Вот пример (псевдообъект C) получения name свойство объекта; вы явно делаете get а также send:

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

Принимая во внимание, что в Scripting Bridge есть неявная ленивая оценка, так что это больше похоже на:

id result = [sbObject name];

Также есть различная обработка информации о типе в сгенерированных заголовках. Я считаю, что Scripting Bridge сохраняет лучшую информацию о типах.

Appscript лучше справляется с обработкой ошибок, например, сообщает, когда что-то недоступно. С Scripting Bridge вы, кажется, получаете объект независимо, и после его использования вы должны запросить его впоследствии, чтобы увидеть, что lastError было. Я считаю, что этот шаблон кодирования ужасен.

Оглядываясь назад? Все, что говорится, проблема, как вы указываете, в том, что appsScript, вероятно, лучше всего рассматривать как "технологию, обращенную назад". Если вы принимаете его, вы смотрите на поддержку / исправление любых проблем в приложении самостоятельно или полагаетесь на исправления от других. Хотя кажется, что сегодня он работает хорошо (OS X 10.9), в будущем вы можете ожидать, что он сломается или потребуется дальнейшее обслуживание, чтобы оно продолжало работать. С другой стороны, поскольку у вас есть источник, вы можете решить проблемы самостоятельно. Ошибка в скриптовом мосту будет не в ваших руках.

Если вы хотите изменить это и посмотреть в будущее, вы можете проверить, что Apple делает для Yosemite с JavaScript в качестве нового языка OSA. Тем не менее, это уходит от вашего первоначального вопроса, который касается рубина и iTunes.

Нижняя линия. Различные компромиссы здесь.

AppleScript. Играя это безопасно.

Скриптовый мост. Хорошая середина? Но не уверен, как использовать из рубина.

appscript. Для любителей / сделай сам.

JavaScript. Для раннего усыновителя.

Я только что наткнулся на эту тему. Я использую 10.11 (El Capitan) и хотел бы получить доступ к iTunes из ruby. Я хотел бы избежать использования osascript.

Scripting Bridge официально не используется для ruby ​​(читайте его где-нибудь на apple.com) и не включен в 10.10 и 10.11. Единственным вариантом для меня был гем rb-appscript. Однако это не сработало для Ruby 2.2.1. Мне нужно было следить за этим постом на github, и теперь он работает отлично.

надеюсь, что это кому-то поможет.

Другие вопросы по тегам