Открыть веб-страницу в After Effects с помощью ExtendScript

Это может быть просто, но я не могу понять это. Как я могу открыть веб-страницу в основном браузере из расширенного сценария, как я сделал бы с window.open() в Javascript?

Я нацелен на After Effects и хотел бы, чтобы он работал как на OS X, так и на Windows.


person Sébastien Lavoie    schedule 16.07.2013    source источник


Ответы (5)


В After Effects вы можете просто сделать это, используя системный объект, как упоминал Дирк. Однако для этого вам понадобится несколько вещей:

  • проверка того, что скрипт может получить доступ к сети:

    if (app.preferences.getPrefAsLong("Main Pref Section", "Pref_SCRIPTING_FILE_NETWORK_SECURITY") != 1)
    {
        alert("Please tick the \"Allow Scripts to Write Files and Access Network\" checkbox if Preferences > General");
    
        // Then open Preferences > General to let people tick the checkbox
        app.executeCommand(2359);
    
        // Here you should check again if they ticked it, and choose to continue or stop ...
    }
    
  • проверка ОС:

    var os = system.osName;
    if (!os.length)
    {
        // I never remember which one is available, but I think $.os always is, you'll have to check
        os = $.os;
    }
    app_os =  ( os.indexOf("Win") != -1 )  ?  "Win" : "Mac"
    
  • ОС-зависимые системные вызовы:

    var url = "http://aescripts.com";
    
    if ( app_os == "Win" )
    {
        system.callSystem("explorer " + url);
    }
    else
    {
        system.callSystem("open " + url);
    }
    
person Maxweel    schedule 30.07.2013
comment
Обратите внимание, что в CC для проверки доступности сети вы должны использовать Main Pref Section v2, Pref_SCRIPTING_FILE_NETWORK_SECURITY. Они добавили v2 к строке. - person ariestav; 02.09.2013

Если у вас есть доступ к CSInterface.js:

cep.util.openURLInDefaultBrowser("http://www.google.com")
person Drew Delano    schedule 01.05.2015

Один независимый от приложения способ состоит в том, чтобы записать представление операционной системы URL-адреса в файл, а затем выполнить файл (execute()).

На Mac это будет файл .webloc. Базовым форматом является «двоичный файл plist». Если вы предпочитаете генерировать xml, создайте образец веб-блока, перетащив его из адреса браузера, и преобразуйте его:

plutil -convert xml1 ~/Desktop/sample.webloc

Чтобы вызвать этот веб-блок, запустите ExtendScript

File("~/Desktop/sample.webloc").execute()
person Dirk    schedule 16.07.2013
comment
Спасибо, так что я полагаю, что не будет простого способа сделать его независимым от платформы (OS X + Windows) и сделать это без необходимости создавать файл? - person Sébastien Lavoie; 17.07.2013

Вы можете делать что угодно на своем локальном компьютере - командную строку и все остальное в файле VBS, и вы можете запустить файл vbs из javascript следующим образом:

function RunScriptVBS(whatscriptname){
    app.doScript(File(whatscriptname), ScriptLanguage.VISUAL_BASIC);
}

Вот ваш vbs-скрипт:

Dim objShell
Set objShell = CreateObject("WScript.shell")
objShell.Run ("http://www.somewhere.com")
set objShell = nothing
person bgmCoder    schedule 16.07.2013
comment
В этом ответе предполагается, что вы используете InDesign или InCopy — метод app.doScript может отсутствовать в других объектных моделях ExtendScript. С другой стороны, в Bridge есть метод app.openUrl(). - person Dirk; 17.07.2013
comment
Ах, ты прав. В ОП не упоминалась какая-либо платформа, кроме базового Extendscript, но это само по себе бесполезно. - person bgmCoder; 17.07.2013

Объем вопроса, по-видимому, был уточнен для After Effects (AE), поэтому я добавляю еще один ответ, специфичный для этого приложения.

На моей машине AE CS6 не создает файл объектной модели для отображения с помощью набора инструментов ExtendScript. Пожалуйста, повторите попытку самостоятельно, средство просмотра объектной модели находится в меню помощи ESTK.

Во всяком случае, браузер данных ESTK работает. Если вы нацелитесь на AE, вы увидите пару объектов и классов. В конце концов проверьте еще несколько пунктов меню во всплывающем меню панели браузера данных. Я более подробно рассмотрел сам объект приложения (там нет openUrl()), а также нашел «системный» объект. Разверните это, и вы увидите несколько интересных методов.

Следующий сценарий открывает URL-адрес на Mac. Винду не пробовал, может она даже такая же.

system.callSystem("open http://www.google.com")

Поскольку я впервые запускаю AfterEffects, возможно, я пропустил лучшие способы.

person Dirk    schedule 26.07.2013