Orion9

|
Posted: Wed Sep 09, 2026 14:16 Post subject: |
|
|
| AkulaBig wrote: | | Будет время, может и сделаю тестовые колонки пользователя. |
Делалось уже, судя по потому, что у меня остался в списке этот набор
| Code: | Widths32=80,30,34,45,30,30,30,30,30,30,30,30,30
Headers32=C1\nC2\nC3\nC4\nC5\nC6\nC7\nC8\nC9\nC10\nC11
Contents32=[=autorun.C1]\n[=autorun.C2]\n[=autorun.C3]\n[=autorun.C4]\n[=autorun.C5]\n[=autorun.C6]\n[=autorun.C7]\n[=autorun.C8]\n[=autorun.C9]\n[=autorun.C10]\n[=autorun.C11]
Options32=-1|0|96
|
MediaInfo медленнее работает с webm форматом, особенно если это 2К-4К. Но можете просто поставить Sleep в функцию Mediainfo, тогда сразу будет видно, что в ТС х32 записи на панели выводятся построчно, а в ТС х64 постранично (т.е. обновляется сразу вся панель с задержкой).
Кстати, концепция с заворачиванием объекта Plugin в отдельный поток тоже рабочая. Я проверил на примере TCMediaInfo.
Допустим, есть подсказка, выводящая данные из плагина:
| Code: | 15exts=>Видео
15fields=Время: [=tcmediainfo.Duration]\nВидео: [=tcmediainfo.All video as string]\nАудио: [=tcmediainfo.All audio as string]\n[="Язык аудио: "tcmediainfo.Audio Language]\n[="Субтитры: "tcmediainfo.Text Streams]\n[="Язык субтитров: "tcmediainfo.Subtitles]
|
Заворачиваем в Autorun
| Code: | 23exts=>Видео
23fields=[=autorun.M1]\n[=autorun.M2]\n[=autorun.M3]\n[=autorun.M4]\n[=autorun.M5]\n[=autorun.M6]
|
Лучше было бы так
| Code: | 23fields=Время: [=autorun.M1]\nВидео: [=autorun.M2]\nАудио: [=autorun.M3]\n[="Язык аудио: "autorun.M4]\n["Субтитры: "=autorun.M5]\n[="Язык субтитров: "autorun.M6]
|
Но Autorun почему-то не возвращает пустое значение, чтобы тотал его принял и пропустил строку. Не стал разбираться, но из-за этого пришлось немного усложнить скрипт, который иначе был бы очень простой
 Hidden text | Code: | Func MediaWdxHint(FileName, FieldIndex, UnitIndex)
Global gMediaWdx
Static c = 0, offset = 69, obj, _
WdxError = 0, lst = List("","","","","",""), _
name = List("Время: ","Видео: ","Аудио: ","Язык аудио: ","Субтитры: ","Язык субтитров: ")
# Duration, All video, All audio,
# Audio Language, Subtitles Format, Subtitle Language
Static field = List(0,43,56,55,58,59)
If c = 0 then
obj = Plugin("TCMediaInfo")
WdxError = ERROR
c = 1
Endif
If WdxError Then Return "Plugin error " & WdxError
If FieldIndex = offset + 1 Then
gMediaWdx = 1
RunThread("MediaWdxThread", FileName, FieldIndex, UnitIndex, obj, lst, field)
While gMediaWdx
Sleep(20)
Wend
EndIf
Local idx = FieldIndex-offset-1
If lst[idx] = '' then
Return
Else
Return name[idx] & lst[idx]
EndIf
EndFunc
Func MediaWdxThread(FileName, FieldIndex, UnitIndex, obj, lst, field)
obj.FileName = FileName
For i = 0 To field.Count - 1
lst[i] = obj.GetValue(field[i])
Next
gMediaWdx = 0
EndFunc |
Результат. Подсказка продолжает отставать (работать с задержкой), но при этом не тормозит и не вешает интерфейс, как это было раньше, что видно на медленных накопителях или сетевом диске.
Можно еще ускорить, если сразу выходить из потока при смене позиции. Но для этого придется как-то сообщать потоку, что нужно бросать текущую подсказку, поскольку произошло внешнее событие. |
|