[wlx/wdx] TCMediaInfo

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

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

Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

ask-rus
Мне кажется, пусть лучше в одной будут. Потом сделаю как с TCTorrent - будет объединенный плагин + отдельно wdx.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Loopback
В таком случае разделять действительно нет смысла, а надо просто чуть изменить заголовок. Сделано.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Bartholomeo
Сообщения: 37
Зарегистрирован: Вс ноя 05, 2006 01:22
Откуда: СПб

Сообщение Bartholomeo »

Loopback
Еще. Изменил в Plugin Manager ассоциацию с "MULTIMEDIA & FORCE" на "MULTIMEDIA", внутр. просм. и быстр. просм. стали подцеплять нормально. Отбражение стало не в двоичном коде, а как надо "графика и т.п."
Еще раз спасибо.
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

заглянул случайно.
Кажется надо делать ассоц-ю не "MULTIMEDIA & FORCE" а "MULTIMEDIA | FORCE" т.к. иначе плагин активиз. только при force , т.е. при вызове ручном режима 4.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Alextp
Да, вполне возможно.
Bartholomeo
Сообщения: 37
Зарегистрирован: Вс ноя 05, 2006 01:22
Откуда: СПб

Сообщение Bartholomeo »

Фантазирую. А возможно ли сделать так, чтобы инфо показывалось во всплывающей подсказке при наведении курсора мыши на медиафайл?
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Bartholomeo
Гислер эти фантазии давно воплотил, у тотала есть такой стандартный функционал. В подсказку для заданного типа файла выводится информация из полей wdx-плагина. Смотри в настройках, "Содержимое панелей - Пользовательские".
Bartholomeo
Сообщения: 37
Зарегистрирован: Вс ноя 05, 2006 01:22
Откуда: СПб

Сообщение Bartholomeo »

Loopback
Спасибо, напомнил, а то я маразмирую. У меня уже к jpg было настроено - забыл.
--------------
Loopback, у меня wdx показывает все, что нужно только для divx, avi (с WMV3, DX5, XviD внутри) и mp4.

В остальных видео (wmv, mpg, mpeg) не показывает нужный мне stream size с любым string - ни в колонках, ни, соответственно, в подсказке. А wlx для этих типов отражает. Пробовал поместить mpg в mkv, безрезультатно. А вот если wmv3 (в vdub) или mpg (в avidemux) сохранить в avi (stream copy), то тогда wdx отображает stream size.

Для flv (vp6,7, avc) wdx не показывает ничего (в форматы добавил), wlx и в GUI отражается.

Еще. Попробовал обновить библиотеку (на MediaInfo_DLL_0.7.34_Windows_i386) в wdx, - заменил библиотеку копированием, обновил, как в инструкции, батником saveprops.bat текстовый файл allprops.txt, но плагин перестал работать.

MediaInfoActiveX.dll зарегистрирован, все перезапускал, как надо.

Нужно ждать доработки плагина(ов) или это я что-то не так сделал?
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

С окончанием жары возникло вдруг непреодолимое желание поправить, наконец, этот плагин :) Желанию противиться не стал. В общем, пришлось переписать почти с нуля, поскольку изначально он все же получился довольно корявым. Всё сильно изменилось, поэтому к сожалению, тому кто уже делал свои настройки к старой версии, придется всё делать заново.

1. Конфиг хранится в XML. На мой взгляд, структуру стало хранить несравненно удобнее и логичнее.
2. Добавлена база для ускорения загрузки информации. То что я ранее говорил насчет скорости Sqlite можно спокойно забыть.
3. Значение колонки можно собирать на основе нескольких полей MediaInfo.
4. Для скриптинга теперь используется Pascal Script, с точки зрения возможности поддержки юникода, к тому же он развивается.
5. Плагин теперь юникодный.

Правда, что касается базы, осталась одна проблема, которую пока не знаю, как решить. Если запущено две копии тотала и обе пытаются писать в один файл - будут проблемы. Хотя читать могут оба спокойно. Как корректно понять, что в данный момент в базу другим процессом выполняется запись - неясно.

Скачать

Bartholomeo писал(а):В остальных видео (wmv, mpg, mpeg) не показывает нужный мне stream size
Попробуй новую версию с новой библиотекой. Если не заработает, надо искать, в какое поле библиотека выводит нужную инфу. По-идее, всё, что видно в листерном плагине, может быть получено отдельно, надо только найти нужное поле.
Bartholomeo писал(а):Еще. Попробовал обновить библиотеку (на MediaInfo_DLL_0.7.34_Windows_i386)
В новой версии исправлено.
Bartholomeo писал(а):MediaInfoActiveX.dll зарегистрирован
А вот это для плагина не нужно совершенно. Никакого ActiveX-а, я это дело не люблю :)
Bartholomeo
Сообщения: 37
Зарегистрирован: Вс ноя 05, 2006 01:22
Откуда: СПб

Сообщение Bartholomeo »

Loopback
Качаю. Не терпится испытать. Спасибо!
------
Loopback, при установке (и далее при обращении к плагину) выскакивает окошко TCMediaInfo
Compiler error in column 'Audio codec custom'
[Error] (1:68): Unknown identifier 'AudiocodecID'
При добавлении колонки Аудиокодек (польз) плагин отображает Error, а Видеокодек (польз) работает.

И еще. Я так понял, если не буду использовать базу, то в xml должен поставить <UseBase>False</UseBase>?
----
ТС 7.55а, ХР3
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Bartholomeo писал(а):при установке (и далее при обращении к плагину) выскакивает окошко TCMediaInfo
Да... в последний момент удалил строчку из конфигурации, только удалил по ошибке определение источника вместо колонки. Залил обновленную версию (ссылка та же), там правильный TCMediaInfo.sample.xml. Или можешь просто в узел "sources" добавить строчку

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

<source name="AudioCodecID" field="CodecID" context="Audio"/>
Bartholomeo писал(а):Я так понял, если не буду использовать базу, то в xml должен поставить <UseBase>False</UseBase>?
Совершенно верно. Тогда можно даже Sqlite3.dll удалить.
ProgMan13
Сообщения: 341
Зарегистрирован: Ср авг 19, 2009 16:07

Сообщение ProgMan13 »

Если запущено две копии тотала и обе пытаются писать в один файл - будут проблемы. Хотя читать могут оба спокойно.
Мутексы в помощь. Перед запись создать мутекс, после - разрушить. Потом перед записью проверять наличие мутекса, например, секунд 10, если мутекс не разрушен - просто не записывать.
02.03.10 Fixed: when TC was started from two different user names (via Runas), the second one couldn't write to the log file and access the thumbs database (requires security descriptor in CreateMutex to allow it)
Эта цитата из истории TC показывает возможные проблемы доступа.
Bartholomeo
Сообщения: 37
Зарегистрирован: Вс ноя 05, 2006 01:22
Откуда: СПб

Сообщение Bartholomeo »

Loopback
Да. Спасибо. Теперь устанавливается без ошибок.
Loopback, никак не осилю xml. Мне нужно получить StreamSize/String5: With proportion, он же, по-моему, просто StreamSize/String.
Я вставил в узел источников строку <source name="VideoStreamSize" field="StreamSize/String5" context="Video"/>, а в узел колонок в секции <!-- Video --> строку <column name="VideoStreamSize">type="template">StreamSize/String5</column>. Результата никакого. Пробовал просто <column name="VideoStreamSize">StreamSize/String5</column> - то же. Также и для Audio.

Как мне поступить?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Loopback писал(а):Правда, что касается базы, осталась одна проблема, которую пока не знаю, как решить. Если запущено две копии тотала и обе пытаются писать в один файл - будут проблемы. Хотя читать могут оба спокойно. Как корректно понять, что в данный момент в базу другим
ProgMan13 писал(а):процессом выполняется запись - неясно.
Мутексы в помощь. Перед запись создать мутекс, после - разрушить. Потом перед записью проверять наличие мутекса, например, секунд 10, если мутекс не разрушен - просто не записывать.
А по-моему, тут спокойно и без мутексов можно обойтись - сам файл отлично сыграет роль мутекса:

Если надо выполнить запись в базу, чтобы вторая копия не смогла одновременно записать в тот же файл, но могла читать в это время, открываем файл на запись с флагом одновременного доступа FILE_SHARE_READ и без флага FILE_SHARE_WRITE. А если нужно, чтобы вторая копия и читать файл не могла, пока первая пишет в него, открываем без флагов одновременного доступа. После записи, естественно, закрываем файл. При этом при попытке открыть файл из другой копии в доступе будет отказано - и можно будет те же 10 секунд выждать и попытаться еще раз. В функции CreateFile за одновременный доступ отвечает параметр dwShareMode. И, по идее, более высокоуровневые средства записи в файл тоже должны поддерживать нечто подобное.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

ProgMan13 писал(а):Мутексы в помощь. Перед запись создать мутекс, после - разрушить.
Возможно, таким путем и придется пойти. Но хотелось бы найти родные средства Sqlite для управления общим доступом.
Bartholomeo писал(а):Мне нужно получить StreamSize/String5: With proportion,
Всё сделано почти правильно, только в тексте колоночного узла должно быть не имя поля MediaInfo, а имя источника. Вот так:

<column name="Video Stream Size">VideoStreamSize</column>
MVV писал(а):Если надо выполнить запись в базу, чтобы вторая копия не смогла одновременно записать в тот же файл, но могла читать в это время, открываем файл на запись с флагом одновременного доступа FILE_SHARE_READ и без флага FILE_SHARE_WRITE.
Тут немного сложнее, поскольку всеми файловыми операциями занимается библиотека. Функция sqlite3_open не принимает никаких флагов. В общем, если встроенных средств не найдется, мутексы выглядят более реальным решением.

В целом, Sqlite очень неплохо документирована, буду искать. Просто думал может кто-то с ней уже имел дело.
Ответить