Добавлено: Пт мар 13, 2026 23:28
AkulaBig писал(а):Но есть плагин, который лишь иногда крякозябры выводит. Можно ли взять значение из плагина и прогнать его через известную функцию фикса кодировки?
Теперь понятно о каком плагине была речь.AkulaBig писал(а):На нашем сайте все ExifToolWDX https://wincmd.ru/plugring/ExifToolWDX.html
Autorun действительно может вытянуть данные из любого wdx-плагина. Для этого используется объект Plugin
Код: Выделить всё
Func GetExifInfoWdx(FileName)
Local str
obj = Plugin("ExifToolWDX")
If ERROR = 0 Then
obj.FileName = FileName
str = obj.GetValue(215) # поле "Comment" номер 215 в плагине
Free(obj)
Else
str = "Plugin error " & ERROR
Endif
Return str
EndFuncОстается только выводить данные в консоль и передавать их в Autorun через ProcessExecGetOutput для дальнейшей обработки.
Чем-то это похоже на проблему с кракозябрами в mp3 тегах, только здесь вместо iso-8859 выступает UTF-8. Алгоритм тоже похож: Autorun получает данные в ANSI, делает копию строки в UTF-8, разбивает обе строки на элементы и помещает их в массивы. Далее сравнивает эдементы каждого массива и делает замены при обнаружении символа 0xFFFD.
Код: Выделить всё
RegisterCommand 60045 "ExifInfo"
Func ExifInfo(FileName)
Local sFile = RequestCopyDataInfo("SP") & RequestCopyDataInfo("SN")
If Not FileExist(sFile) Then
ShowHint("Файл не существует " & sFile)
Return
EndIf
MsgBox(GetExifInfo(sFile))
EndFunc
Func GetExifInfo(FileName)
Static a = List(), u = List(), exif = COMMANDER_PATH & "\Plugins\wlx\ExifToolView\exiftool.exe"
Local ansi, utf8, wrong = Chr(0xFFFD)
ProcessExecGetOutput ansi %exif% ' -G -S -lang ru "%FileName%"'
Local nSize = StrLen(ansi)
Local buf = Buffer(nSize)
buf.Zero()
buf.SetStr(ansi, 0, nSize, "ANSI")
utf8 = buf.GetStr(0, nSize, "CP:65001")
Free(buf)
a.Count = 0
u.Count = 0
a.Text = ansi
u.Text = utf8
For i = 0 to u.Count - 1
If StrPos(u[i], wrong) Then u[i] = a[i]
Next
Return u.text
EndFuncНадеюсь, это как-то поможет. Непонятно только, что вы хотите делать со всей этой огромной кучей потенциальных полей. Они ведь тоже динамически будут появляться и исчезать в зависимости от типа файлов.
Под внешними кодеками вы имеете в виду переносимые вместе с плеером? Имхо, там любая поддержка должна быть. Автор годами держит проект на плаву. Но я посмотрю завтра, что там в настройках.AkulaBig писал(а):И про это писал. Могли-бы они использовать внешние кодеки, можно было-бы покапаться.