[wdx] WinScript Advanced Content Plugin (x86\x64) (new)

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Может кто-нибудь подтвердить/опровергнуть такое поведение?
Уже давно не пользовался Windows 7. Могу только добавить, что в 11-ой такой проблемы нет. Все работает ровно.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

del
Последний раз редактировалось AkulaBig Чт окт 31, 2024 09:19, всего редактировалось 1 раз.
Аватара пользователя
Monarch-LFV
Сообщения: 360
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

AkulaBig
Не совсем понятно зачем писать свой скрипт, если есть быстрый плагин TCMediaInfo.
Из своего опыта скажу: писал разные VBS для WinScriptAdv, которые где-то дублируют возможности плагинов, но все они были медленнее заточенных плагинов, но оно и понятно, сколько этапов проходит от запроса до вывода информации:
TC -> WinscriptADV -> Запуск интерпретатора -> работа самого скрипта -> Запуск сторонней библиотеки (например, MediaInfo) -> WinscriptADV -> TC.
И так на каждый файл. Длинная цепочка получается, потому и медленно.
А чем не устраивает TCMediaInfo?
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Раз не нужен, удалил. Это проще сделать, чем что-то объяснять таким как вы.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

AkulaBig
Не, ну любопытство - это номально же :), я и сам спрашиваю иногда на предмет использования у себя или замены используемого, а звучать может не так однозначно...

Так понял, возникла проблема с запуском скрипта AutoIt из скрипта на VBScript? Возможно, в скрипт, написанный для плагина, не был добавлен необходимый для запуска из vbs-скрипта выхлоп - не хватает ConsoleWrite, типа как тут.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Возможно и из-за ConsoleWrite. Но еще есть проблема из-за filename. В ahk так, а в au3 $filename. Но знак доллара поставить не дает, сообщает об ошибке. Не понятно, что с этим делать.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Если скрипт AutoIt запускать из vbs-скрипта, то первый должен читать имя файла из $CmdLine[1] и писать результат в ConsoleWrite, а второй выглядеть как-то так

Код: Выделить всё

content = execStdOut("""path-to-AutoIt3.exe"" ""path-to-script.au3"" """ & filename & """")

Function execStdOut(cmd)
   Dim goWSH : Set goWSH = CreateObject("WScript.Shell")
   Dim aRet: Set aRet = goWSH.exec(cmd)
   execStdOut = aRet.StdOut.ReadAll()
End Function
Аватара пользователя
Monarch-LFV
Сообщения: 360
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

AkulaBig
Не думал, что мои слова вызовут такую реакцию. Прошу прощения если что не так. И согласен со Skif_off про любопытство. Объяснять всегда надо, особенно таким как я :wink:
Для себя тоже новое узнал, как вывод из stdout записать в переменную, до этого всегда писал во временный файл в %temp%, и оттуда считывал.
Skif_off
Спасибо за наводку!
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Skif_off писал(а):писать результат в ConsoleWrite
Я сейчас занялся запуском MediaInfo CLI из vbs. Там тоже одна из проблем вывод результата в плагин. Но до этого мне еще далеко. Сейчас пока добился только вывода хотя-бы одного результата в самом скрипте. Теперь думаю как-бы обойтись без промежуточного файла для множества данных.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

AkulaBig
Вариантов тут немного, проще всего функцией Split разрезать.
Если из скрипта AutoIt, наверное, лучше не несколько раз вызывать ConsoleWrite и резать строки, а отдать одной строкой.

Наверное, уже заметили у MediaInfo CLI особенность, можно за один раз вытащить несколько значений, группируя их (General, Video и т.д.), типа

Код: Выделить всё

Dim A, O
O = execStdOut("""path-to-mediainfo.exe"" --Inform=""Video;%Width%|%Height%|%BitRate%"" """ & filename & """")
A = Split(O, "|")
content = A(0)
content1 = A(1)
content2 = CLng(A(2)) / 1000
(execStdOut() парой сообщений выше)
AkulaBig писал(а):Теперь думаю как-бы обойтись без промежуточного файла для множества данных.
Зависит от данных, которые вытаскиваете, и от того, как.
Последний раз редактировалось Skif_off Сб ноя 02, 2024 01:15, всего редактировалось 1 раз.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Хотелос-бы в массив закинуть весь список и из него брать значения. То-есть как у вас. Но не прописывать каждое значение для --Inform, а применить ключ -f. Надо проверить, будет работать с вашим кодом.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

AkulaBig писал(а):применить ключ -f
Вывод может содержать данные, которые не нужны, но на их получение уйдёт время. К тому же выхлоп может различаться в зависимости от формата и/или версии MedaInfo.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Skif_off писал(а):выхлоп может различаться в зависимости от формата и/или версии MedaInfo.
Такое практически невозможно. Тогда и TCMediaInfo неправильно будет работать. Это тоже самое, что мелко-мягкие написали-бы Винду с нуля. Убрав поддержку старого говнокода. Это очень заманчивая перспектива, но нереальная. Такое только юниксоиды практикуют.
Skif_off писал(а): O = execStdOut("""path-to-mediainfo.exe"" --Inform=""Video;%Width%|%Height%|%BitRate%"" """ & filename & """")
Я правильно понимаю, что вы выкладываете алгоритм, а не рабочее решение? Или у вас этот код работает? Я-то уже обрадовался, что так можно писать. Но у меня не работает. А вот дальше начинается интересная история. Если этот код только через Run()\Exec() можно выполнить, то будет проблематично завернуть его в execStdOut.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

AkulaBig писал(а):Такое практически невозможно. Тогда и TCMediaInfo неправильно будет работать.
Думаю, TCMediaInfo запрашивает то, что прописано у него в конфиге, без -f или чего-то подобного.
По количеству выводимой с -f инфы различия будут, сравните файлы разных форматов.
AkulaBig писал(а):Я правильно понимаю, что вы выкладываете алгоритм, а не рабочее решение? Или у вас этот код работает? Я-то уже обрадовался, что так можно писать. Но у меня не работает.
С Lua такое проворачивал, проверил сейчас с VBScript, дописав

Код: Выделить всё

WScript.Echo O
- работает, но почему-то мелькает окно консоли (непонятно, вроде как cli-версия MediaInfo).

По ходу, нужно либо уточнять параметры MediaInfo на предмет что там есть полезного, либо заворачивать в Run с --LogFile= (скрывая окно и читая файл), либо загуглить, какие есть решения VBScript + MediaInfo.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Все дело, как всегда, было в кавычках. То-есть без cmd /C запускается, но окно консоли мелькает.
Поправленный вариант не выкладываю, так как есть косяки. Почему-то колонка Продолжительность на некоторых файлах ругается Индекс выходи за пределы диапазона '[number: 1]'

Добавлено спустя 5 минут:
Skif_off писал(а): работает, но почему-то мелькает окно консоли
У меня тоже.
Skif_off писал(а):заворачивать в Run с --LogFile= (скрывая окно и читая файл)
Такой вариант есть у меня. Посмотрю, что лучше сделать. Решить-бы проблему с Продолжительностью.

Добавлено спустя 29 минут:

С Продолжительностью все ясно. Не в ней дело. Почему-то А(0) ругается на любой параметр, если в файле данных нет, видимо. Возможно Сплит криво работает.
Ответить