Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Autorun
Goto page Previous  1, 2, 3 ... 225, 226, 227
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Orion9



Joined: 01 Jan 2024
Posts: 1043

Post (Separately) Posted: Sat Mar 14, 2026 00:28    Post subject: Reply with quote

AkulaBig wrote:
Но есть плагин, который лишь иногда крякозябры выводит. Можно ли взять значение из плагина и прогнать его через известную функцию фикса кодировки?

AkulaBig wrote:
На нашем сайте все ExifToolWDX https://wincmd.ru/plugring/ExifToolWDX.html

Теперь понятно о каком плагине была речь.

Autorun действительно может вытянуть данные из любого wdx-плагина. Для этого используется объект Plugin
Code:
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

Функция вернет строку из поля Comment плагина ExifToolWDX. Но если данные хранятся в ANSI, а не в UTF-8, то результатом окажутся заменяющие символы со знаком вопроса, как у вас на картинках. И сделать с этим ничего не получится — так возвращает данные сам плагин ExifToolWDX, автор которого не предусмотрел работу с ANSI.

Остается только выводить данные в консоль и передавать их в Autorun через ProcessExecGetOutput для дальнейшей обработки.

Чем-то это похоже на проблему с кракозябрами в mp3 тегах, только здесь вместо iso-8859 выступает UTF-8. Алгоритм тоже похож: Autorun получает данные в ANSI, делает копию строки в UTF-8, разбивает обе строки на элементы и помещает их в массивы. Далее сравнивает эдементы каждого массива и делает замены при обнаружении символа 0xFFFD.
Code:
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

В результате "выхлоп" корректно отображает и ANSI и UTF-8, если обе кодировки присутствуют в тегах файла.

Надеюсь, это как-то поможет. Непонятно только, что вы хотите делать со всей этой огромной кучей потенциальных полей. Они ведь тоже динамически будут появляться и исчезать в зависимости от типа файлов.
AkulaBig wrote:
И про это писал. Могли-бы они использовать внешние кодеки, можно было-бы покапаться.

Под внешними кодеками вы имеете в виду переносимые вместе с плеером? Имхо, там любая поддержка должна быть. Автор годами держит проект на плаву. Но я посмотрю завтра, что там в настройках.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1043

Post (Separately) Posted: Sat Mar 14, 2026 12:51    Post subject: Reply with quote

AkulaBig
Продолжу свою мысль.

Если выводить поля из exiftool, то без фильтра, видимо, не получится обойтись. Автор ExifToolWDX.wdx использует для этого шаблоны Config*.txt, где можно самостоятельно указывать, какие поля выводить, а какие нет. Подход, в целом, на мой взгляд, правильный — лучше сходу все-равно не придумаешь. Однако шаблоны не обновлялись 10 лет, а exiftool за это время далеко ушел. Минус подхода еще в том, что для того, чтобы сделать жадный до полей шаблон, придется с головой уйти в изучение всех мета-данных, которые выводит exiftool. Задача тягомотная, на мой взгляд, и не стоит усилий, особенно на фоне тормозов это утилиты. Вот если нужно вывести что-то конкретное, типа гео-данных, тогда да. А в остальном же...

В общем, глянул я последний MPC-BE — у него кодеки вшиты прямо в EXE — куда же еще лучше? Но в настройках можно и на внешние преключиться при желании. Странно, что автор сам не сделал плагин для ТС за все эти годы, неужели никто его не просил.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 225, 226, 227
Page 227 of 227

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group