[wlx/wdx] TCMediaInfo

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

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

Аватара пользователя
Lisabon
Сообщения: 147
Зарегистрирован: Чт фев 17, 2011 23:11

Сообщение Lisabon »

Loopback
Выложил дебажку
1.
лучше запускать при выключенной базе
В файле конфигурации:

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

  <MemoryBase>False</MemoryBase> 
  <UseBase>False</UseBase> 
Выдало с начала одну ошибку. В окне с ошибкой нажал на кнопку ОК. ТС не завис и плагин продолжал работать. Через некоторое количество папок выдало ешё раз ошибку. Снова в окне с ошибкой нажал на кнопку ОК. ТС не завис и плагин продолжал работать. Через некоторое количество папок, ТС завис.
Вот ссылка на debug.log - Скачать

2. В файле конфигурации:

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

  <MemoryBase>False</MemoryBase> 
  <UseBase>True</UseBase> 
2.1 ТС завис без ошибок.
Попытка №1 - ссылка на debug.log - Скачать
Попытка №2 - ссылка на debug.log - Скачать

2.2 Выдало с начала одну и единственную ошибку. В окне с ошибкой нажал на кнопку ОК. ТС не завис и плагин продолжал работать. Скорость работы плагина уменьшилась на небольшое время, через несколько папок, скорость работы увеличилась. Еще через некоторое время, плагин перестал работать, а именно перестал выдавать информацию в поля, на всех полях данных было пусто. ТС не завис.
Вот ссылка на debug.log - Скачать
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Lisabon
Спасибо за тестирование, непосредственная причина пока непонятна, но видно некоторые странности:

1. Почему-то на поле "All audio as string" (и только на нем) работа переходит из фонового в основной поток. Такого быть не должно. Я у себя попробовал добавить это поле, но такой картины не наблюдаю.

2. Через какое-то время начинают появляться ошибки чтения MediaLibrary, это происходит как раз в районе смены потока, поскольку библиотека пытается прочитать разные файлы из разных потоков одновременно. Вероятнее всего как раз здесь появляются сообщения об ошибках. После этого тотал может зависнуть, а может и нет, в логах разницы не видно. Скорее всего это последствие первой проблемы.

Сделал вторую дебажку с более подробным выводом. Думаю, пока достаточно лога без базы, включение базы ничего не добавляет.
Аватара пользователя
Lisabon
Сообщения: 147
Зарегистрирован: Чт фев 17, 2011 23:11

Сообщение Lisabon »

Loopback
на поле "All audio as string"
Поле "All audio as string" у меня используется в "HintsCustomField"

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

[HintsCustomField]
0exts=*.669; *.aac; *.ac3; *.adt; *.adts; *.adx; *.aif; *.aifc; *.aiff; *.aix; *.alac; *.amf; *.amr; *.ape; *.apl; *.au; *.bwf; *.caf; *.dff; *.dsf; *.dts; *.dtshd; *.eac3; *.far; *.fla; *.flac; *.it; *.kar; *.m1a; *.m2a; *.m4a; *.m4b; *.m4p; *.mid; *.midi; *.mka; *.mo3; *.mod; *.mp+; *.mp1; *.mp2; *.mp3; *.mpa; *.mpc; *.mpga; *.mtm; *.nst; *.ofr; *.ofs; *.oga; *.ogg; *.okt; *.opus; *.ptm; *.ra; *.rma; *.rmi; *.s3m; *.snd; *.spx; *.stm; *.tak; *.tta; *.ult; *.umx; *.wav; *.wma; *.wsd; *.wv; *.xm
0fields=[=tcmediainfo.All audio as string]
При работе с контекстным плагином, скорей всего попадает курсор на аудиофайл. Начинает дополнительно работать "HintsCustomField" и наверное поэтому начинает работать основной и фоновый поток.

Добавлено...
Сделал вторую дебажку с более подробным выводом
В файле конфигурации:

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

  <MemoryBase>False</MemoryBase> 
  <UseBase>False</UseBase>
1. TC падает.
Ссылка на debug.log - Скачать

2. ТС не падает, но через некоторое время, перестаёт работать плагин. Плагин выдаёт пустые значения в полях.
Ссылка на debug.log - Скачать

3. Выскочили две ошибки в процессе. ТС падает.
Ссылка на debug.log - Скачать

4. В WinCmd.ini убрал "HintsCustomField" в которой используется "All audio as string". При тестировании wdx-плагина, ошибки не появлялись и ТС не падал.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Lisabon писал(а):Поле "All audio as string" у меня используется в "HintsCustomField"
Да, вот про подсказки забыл совершенно. Добавил у себя, появились вызовы из основного потока, хотя падений все равно нет.
Lisabon писал(а):В WinCmd.ini убрал "HintsCustomField" в которой используется "All audio as string". При тестировании wdx-плагина, ошибки не появлялись и ТС не падал.
Это только подтверждает, что проблема из-за вызовов из разных потоков. Работа с библиотекой в том виде, в котором она была сделана, некорректна для нескольких потоков, поскольку сама библиотека многопоточная.

Переделал работу с библиотекой, теперь в каждом потоке инициализируется свой экземпляр и поток работает только с ним. Тестовая версия здесь. Обязательно в конфиге отключите отладку (т.к. проблемы могут быть и при записи лога, он сейчас тоже не рассчитан на многопоточность) и попробуйте её работу с включенными подсказками. Надеюсь, проблема решится.
Аватара пользователя
Lisabon
Сообщения: 147
Зарегистрирован: Чт фев 17, 2011 23:11

Сообщение Lisabon »

Loopback
Тестовая версия здесь. Обязательно в конфиге отключите отладку
В файле конфигурации попробовал с такими параметрами:
Вариант №1

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

        <MemoryBase>False</MemoryBase>
        <UseBase>True</UseBase>
        <DebugMode>0</DebugMode>
и

Вариант №2

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

        <MemoryBase>False</MemoryBase>
        <UseBase>False</UseBase>
        <DebugMode>0</DebugMode>
и погонял.
Падений ТС не было, ошибок тоже не было, плагин работал без проблем. По ходу проблему решили. Спасибо!
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Lisabon
Отлично! Еще раз спасибо за тестирование, это была одна из тех проблем, без решения которых сложно двигаться дальше.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Версия 0.8.1

Скачать

Список обновлений:

+ функция TimingFormat теперь возвращает пустую строку, если значение тайминга не может быть перобразовано в число
* WLX: удалены функции FieldGetFirst/FieldGetNext, используйте цикл с GetCount и Get
* WDX: удалена поддержка скриптов от ранних бет, в случае, если у вас еще есть такие, просто вручную уберите секцию "var" и "." после последнего "end"
- WDX: исправлена работа поля типа "список"
* изменения в системе записи отладочной информации
- WDX: исправлены падения плагина на некоторых системах после включения фоновой загрузки полей в 0.8.0
- исправлен баг с инсталляцией, конфигурация-пример не копировалась в рабочую
Viman
Сообщения: 40
Зарегистрирован: Пн янв 10, 2005 11:22
Откуда: Moscow

Сообщение Viman »

При попытке просмотра или быстрого просмотра папки вывод информации перехватывает плагин и выводит в режиме Аудио (компактный) такой текст:
Script error : Invalid operand types for ">" (NDUR > 3600000 )
в Видео (компактный):
Script error : Invalid parameters, function NUMBER (NUMBER ( GET ( 'Duration' ) ) )
Если попытаться переключиться на По-умолчанию (кстати, здесь тире не ставится), то Total Commander закрывается без каких-либо сообщений.
Windows 10 Pro 1809 x64, Total Commander 9.21a x64.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Viman писал(а):просмотра или быстрого просмотра папки
Ого, вот это косяк :) На папки плагин вообще не должен открываться. Спасибо, поправлю.
Viman писал(а):кстати, здесь тире не ставится
Знаю, просто почему-то очень не нравится вид этой фразы без дефиса. Но вообще, конечно, надо будет написать правильно.
Viman
Сообщения: 40
Зарегистрирован: Пн янв 10, 2005 11:22
Откуда: Moscow

Сообщение Viman »

Loopback писал(а):Знаю, просто почему-то очень не нравится вид этой фразы без дефиса.
Может, назвать этот режим Расширенный или Подробный? А то как-то интересно получается, что по факту по умолчанию отображается не он, а краткий режим.

Кстати, если уж речь об этом режиме. А можно ли в нём добиться отображения длительности в формате hh:mm:ss.fff?
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Viman писал(а):А то как-то интересно получается, что по факту по умолчанию отображается не он, а краткий режим.
Это сделано умышленно. Режим по умолчанию - это так называемый режим вывода Inform, просто выдающий все имеющиеся непустые поля. Там достаточно много информации, часто не представляющей интереса, а та, которая интересна - разбросана между неинтересной, и все это еще бывает не умещается на одном экране. Особенно это касается аудио и текстовых потоков в видео, как правило самую полезную информацию по ним можно уместить в одну строчку. Поэтому и возникла идея сделать максимально компактный шаблон с наиболее важной информацией.

В то же время очевидно, что понятие "интересной" информации у всех разное, поэтому режимы просмотра можно настраивать самостоятельно. В любом случае, к релизу я планирую сделать расширенный шаблон, аналог Inform, но с возможностью локализации названия полей (вывод Inform не может быть локализован).
Viman писал(а):А можно ли в нём добиться отображения длительности в формате hh:mm:ss.fff?
Нет, в Inform ничего менять нельзя. Только через свой шаблон.
Viman
Сообщения: 40
Зарегистрирован: Пн янв 10, 2005 11:22
Откуда: Moscow

Сообщение Viman »

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

Сообщение Loopback »

Viman писал(а):Поэтому и возникла мысль о его переименовании в Расширенный или Подробный. И это, по-моему, будет даже как-то более логично выглядеть рядом с кратким.
Когда будет сделан расширенный режим, этот я вообще думал убрать, ну или так и назвать его "Inform" и поместить где-нибудь в конце. В нем всё без перевода идет, мне это не очень нравится.
Viman писал(а):А можно где-то посмотреть правила его формирования?
В конфиге несколько имеющихся шаблонов (они в терминологии плагина "режимы просмотра" называются) можно использовать как пример, справка полная уже есть. Можно свой режим просмотра добавить и экспериментировать с ним.
Viman
Сообщения: 40
Зарегистрирован: Пн янв 10, 2005 11:22
Откуда: Moscow

Сообщение Viman »

Loopback писал(а):справка полная уже есть
Вот как всегда, справку читаем в последнюю очередь. Каюсь.
Спасибо.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Версия 0.8.2 бета, скачать можно здесь.

Из основного, добавлен новый режим просмотра, аналогичный стандартному Inform, но корректно (надеюсь) переводящий необходимые строки. Он теперь будет основным.

В принципе, мой список планируемого пуст, если всё нормально, то скоро будет релиз.

Единственная проблема остается в том, что я не могу в скриптах протестировать разделы типов содержимого: Menu (кроме глав), Image и Other - я так и не смог найти файлы, где были бы эти данные, и даже не очень представляю, как они должны выглядеть.

Список обновлений:
* WLX: небольшие правки в "компактных" режимах просмотра
* WDX: обновлены и локализованы скрипты колонок
+ узел <funclibraries>, где можно задавать библиотеки функций, используемых в разных скриптах
+ функция GetLang, вызываемая без параметров, возвращает текущий идентификатор языка (ENG, RUS...)
+ функция GetLang теперь глобальная и может использоваться как в WLX, так и в WDX
- WLX: исправлена проблема загрузки плагина, если предварительно не был загружен WDX-плагин
+ WDX: добавлена опция DataAutoUpdate для автоматического обновления записей базы после добавления нового источника
+ добавлен "Полный" режим просмотра, показывает все непустые поля без дополнительной обработки
+ обновлен файл MediaInfo.lng
- исправлено создание allprops.txt (стандартный вывод библиотеки обрезает некоторые длинные имена полей)
- исправлена работа функции StrIsNumber
- WLX: исправлено появление горизонтальной полосы прокрутки тогда, когда в ней нет необходимости
+ WLX: добавлен новый режим просмотра "По умолчанию", старый переименован в "Стандартный Inform"
+ StrPos теперь умеет искать с заданной позиции
* небольшие внутренние изменения
* удалены старые файлы справки readme_*.html
+ добавлена английская справка
- WLX: плагин больше не будет пытаться открывать каталоги
Ответить