Перевести AppleScript в приложение Python (`do javascript`)

Это шаблон AppleScript:

tell application "Adobe Photoshop CS5"
  set theFile to alias “Application:Documents:MyFile” open theFile
  do javascript (file <path to Emboss.jsx>) with arguments { 75,2,89 }
end tell

И я хотел бы перевести это на приложение Python. К сожалению, я не могу понять, как перевести do javascript. Есть идеи?

Я даже не знаю, как это узнать. Может быть, я слишком мало знаю AppleScript. Является ли do ключевым словом? Или это команда, которую я отправляю приложению? Является ли javascript параметром do? Или do javascript сочетается (как команда с пробелом)?


person Albert    schedule 15.08.2011    source источник
comment
do javascript, вероятно, является командой для запуска кода Js (в данном случае код находится в файле). Обычно вы используете это в Safari, но приложения Adobe также поддерживают это.   -  person Fábio Diniz    schedule 15.08.2011
comment
Почему закрытое голосование без каких-либо комментариев?   -  person Albert    schedule 15.08.2011


Ответы (2)


Чтобы перевести общий AppleScript в appscript, используйте инструмент ASTranslate, доступный на appscript веб-сайте здесь. Его не всегда удается успешно перевести из-за особенностей и ошибок в определениях скриптов некоторых приложений, но это хорошее место для начала.

person Ned Deily    schedule 15.08.2011
comment
Прохладный! Кажется, что do javascript действительно канонически переводится как do_javascript. - person Albert; 15.08.2011

Я до сих пор точно не знаю, как перевести вышеизложенное (и в более общем плане: я не знаю, как перевести любой общий код AppleScript в appscript Python).

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

Например, это работает:

from appscript import *
import os, sys

ps = app("Adobe Photoshop CS5")

filelist = sys.argv[1:]

jsCode = """
var g_StackScriptFolderPath = app.path + "/Presets/Scripts/" 
var runMergeToHDRFromScript = true; 
$.evalFile(g_StackScriptFolderPath + "Merge to HDR.jsx");
mergeToHDR.mergeFilesToHDR(%s, true);
""" % (repr(filelist),)

ps.do_javascript(jsCode)
person Albert    schedule 15.08.2011