А вот допустим, я вручную нашёл название нужной функции. Как ее выполнить через этот Jint
и получить от нее результат? В интернете в примерах они просто весь скрипт выполняют, а не отдельную функцию.
Там функция задаётся вручную и, затем, вызывается. А мне надо загрузить большой скачанный скрипт и из него выполнить функцию.
engine.Execute(@"myscript
myFunc();
");
то есть, как-то так?
Так говорю ж
You can invoke JavaScript function reference
var add = new Engine() .Execute("function add(a, b) { return a + b; }") .GetValue("add"); add.Invoke(1, 2); // -> 3
or directly by name
var engine = new Engine() .Execute("function add(a, b) { return a + b; }"); engine.Invoke("add", 1, 2); // -> 3
кстати,
var engine = new Engine().Execute(myText);
выдаёт экскепшен document is not defined
. Чё за документ?
myText
это большой скачанный скрипт. Я его в файл сохранил и из файла гружу.
document
это стандартная глобальная переменная в браузерном варианте JS.
Похоже Jint не поддерживает это (он ж не браузер), так что если оно нужно — надо искать другие варианты (Селениум как вариант). Надо посмотреть что оно с документом делает, по идее не должно ничего важного с ним делаться в этой функции ютуба, иначе бы и Питоновский вариант не работал.
У youtube-dl вообще просто свой небольшой выполнятор JS youtube-dl/jsinterp.py at master · ytdl-org/youtube-dl · GitHub
Эта функция, вроде, возвращает массив интегеров.