View previous topic :: View next topic |
Author |
Message |
Loopback
Joined: 07 Sep 2009 Posts: 1526
|
(Separately) Posted: Thu May 29, 2025 23:43 Post subject: |
|
|
Для wlx так и есть. Посмотрим, если там никаких подводных камней нет, можно будет и для wdx включить обратно. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 772
|
(Separately) Posted: Fri May 30, 2025 00:03 Post subject: |
|
|
Loopback
От идеи с переменной окружения вижу только плюсы. Во-первых, не нужно будет делать никаких опций в файле конфигурации. Во-вторых, фильтрацией можно будет легко и красиво управлять нажатием кнопки или выполнением команды. Допустим, переменная будет называться TC_MEDIAINFO_FORMATS и по умолчанию она будет включена. Тогда пользователю можно и даже нужно будет управлять ее состоянием через Autorun:
Code: | If TC_MEDIAINFO_FORMATS = 1 Then
SetEnv TC_MEDIAINFO_FORMATS 0
MsgBox("Фильтрация форматов отключена")
Else
SetEnv TC_MEDIAINFO_FORMATS 1
MsgBox("Фильтрация форматов включена")
EndIf |
Или искать другие пути воздействия на неё. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1526
|
(Separately) Posted: Fri May 30, 2025 01:08 Post subject: |
|
|
Значит переменную придется дёргать на каждом файле. Нет, такого здесь я не хочу, равно как горячих клавиш, нажатых Ctrl и чего-то подобного. Я вообще не уверен, что стоит делать такую откровенно вредную опцию, чтобы под нее еще какую-то специальную обработку через переменные окружения вводить... |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 329
|
(Separately) Posted: Fri May 30, 2025 04:11 Post subject: |
|
|
Loopback wrote: | Посмотрим, если там никаких подводных камней нет, можно будет и для wdx включить обратно. |
Посмотрите, если не трудно. Хотелось-бы возможность и из TCMediaInfo перевод брать. В соответствии со справкой.
Orion9 wrote: | От идеи с переменной окружения вижу только плюсы. |
Мне уже при смене языка пришлось решать вопрос бесконечного подергивания меню, которое не позволяло его открыть из-за постоянной проверки переменной. Опция самое то. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 772
|
(Separately) Posted: Fri May 30, 2025 13:51 Post subject: |
|
|
Loopback wrote: | Значит переменную придется дёргать на каждом файле. |
И что произойдёт, камень перегреется? ) Можно подумать, это мы дергать будем. Пусть об этом позаботится наш многоядерный друг и его кэш второго уровня.
В скорости, конечно, будет небольшое падение, но это вопрос миллисекунд, что, кстати, проверить можно. Вот мне и загорелось проверить и заодно и потестировать вашу новую функцию FileFind в Autorun:
 Hidden text TOTALCMD#BAR#DATA
60025
%COMMANDER_EXE%
Скорость поиска файлов|CTRL - Проверять окружение|SHIFT - Смена каталога
-1
 Hidden text Code: | RegisterCommand 60025 "EnvSpeedTest"
Func EnvSpeedTest()
Local lst, mod, T1 = GetUptime()
Local b_CTRL = IsPressed(0x11), b_SHIFT = IsPressed(0x10)
Global CM_EXE = 0
Global FF_LST = 0, FF_FOUND = 0
If Not b_CTRL Then
lst = FileFind(b_SHIFT ? ProgramFiles: ProgramW6432, "*.*", 1, 1, "PathList", "Func:FilterFunc1")
mod = 0
Else
lst = FileFind(b_SHIFT ? ProgramFiles: ProgramW6432, "*.*", 1, 1, "PathList", "Func:FilterFunc2")
mod = 1
EndIf
Local TL = Round(GetUptime() - T1, 0) / 1000
lst = "Проверять окружение: " & (mod = 1 ? "YES": "NO") & auCRLF & _
"Всего файлов: " & FF_LST & auCRLF & _
"Найдено файлов: " & FF_FOUND & auCRLF & _
"Проверок переменной окружения: " & CM_EXE & auCRLF & _
"Время операции: " & StrFormat("%.3f", TL) & " sec" & auCRLF & _
"---------------" & auCRLF & lst
MsgBox(lst)
EndFunc
Func FilterFunc1(file)
FF_LST += 1
If file.ext = ".exe" And file.Size > 1048576 And file.Size < 2097152 Then
FF_FOUND += 1
Return 1
EndIf
Return 2
EndFunc
Func FilterFunc2(file)
FF_LST += 1
If StrPos(COMMANDER_EXE, ".exe") Then
CM_EXE += 1
EndIf
If file.ext = ".exe" And file.Size > 1048576 And file.Size < 2097152 Then
FF_FOUND += 1
Return 1
EndIf
Return 2
EndFunc |
Кнопка ищет все ".exe" в каталоге Program Files, размер которых от 1Мб до 2Мб, и выводит сообщение в MsgBox. CTRL - включает проверку переменной окружения %COMMANDER_EXE%, SHIFT - меняет каталог на Program Files (x86).
P.S. Важное уточнение. Делал, не для того, чтобы что-то доказать, а потому что стало интересно и пока появилась такая возможность. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 329
|
(Separately) Posted: Sat May 31, 2025 18:01 Post subject: |
|
|
Наделал составных полей. Но вот V_AllDisplAspRt не удается создать, так как поля можно прописывать только из источника. А название колонки V_Orient можно прописать?
Code: | <column name="V_DisplAspRtStr">V_DisplayAspectRatioStr</column>
<column name="V_Orient" type="script">
<![CDATA[
Output:='';
if V_DisplayAspectRatio <> '' then
begin
case V_DisplayAspectRatio of
'0'..'0.999': Output:=GetLang('Portrait');
'1.000': Output:=GetLang('Square');
else Output:=GetLang('Landscape');
end;
end;
]]>
</column>
<column name="V_AllDisplAspRt" type="script">
<![CDATA[
Output:='';
if (V_DisplayAspectRatioStr <> '') then Output:=Output+V_DisplayAspectRatioStr;
if (V_Orient <> '') then Output:=Output+'/'+V_Orient;
]]>
</column> |
|
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1526
|
(Separately) Posted: Mon Jun 02, 2025 10:43 Post subject: |
|
|
Нет, использование колонки в качестве источника не предусмотрено.
Видимо, будет проще всего добавить вспомогательную функцию в пользовательскую библиотеку (или создать свою библиотеку), тогда её можно будет использовать в разных колонках без повторения кода. Примерно так:
Code: |
<column name="V_DisplAspRtStr">V_DisplayAspectRatioStr</column>
<column name="V_Orient" type="script">
<![CDATA[
uses 'UserFunc';
Output := GetOrientation(V_DisplayAspectRatio);
]]>
</column>
<column name="V_AllDisplAspRt" type="script">
<![CDATA[
uses 'UserFunc';
Output:='';
if (V_DisplayAspectRatioStr <> '') then Output:=Output+V_DisplayAspectRatioStr;
if (V_Orient <> '') then Output:=Output+'/'+GetOrientation(V_DisplayAspectRatio);
]]>
</column>
...
<funclib name="UserFunc">
<![CDATA[
function GetOrientation(nDisplayAspectRatio);
begin
if nDisplayAspectRatio<> '' then
begin
case nDisplayAspectRatio of
'0'..'0.999': Output:=GetLang('Portrait');
'1.000': Output:=GetLang('Square');
else Output:=GetLang('Landscape');
end;
end
else
Output:='';
end;
]]>
</funclib>
|
|
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 329
|
(Separately) Posted: Mon Jun 02, 2025 10:54 Post subject: |
|
|
Спасибо за подсказку. Попробую так сделать и позже выложу переделанный TCMediaInfo.xml для контекстной части. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 329
|
(Separately) Posted: Mon Jun 02, 2025 14:36 Post subject: |
|
|
Уф, голову сломал, но заработало. Вместо Output в функции надо писать Result. Ну а остальное по мелочи, быстро догадался
Добавлено спустя 2 часа 25 минут:
Переделал полностью контекстную часть файла настроек TCMediaInfo.xml. Главной целью было сделать отображение пользовательских колонок в соответствии с форматом вывода MediaInfo. Поэтому порядок колонок, их название полностью переделаны. Конечно большие исправлении и в составе колонок. Так как количество пользовательских колонок Гислером ограничено до 32 и длина данных тоже ограничена пришлось и это учесть при переделке. Поэтому все названия полей у меня новые. И много составных полей. Так что привожу все измененные файлы.
 TCMediaInfo.xml
Code: |
<sources>
<!-- General -->
<source name="G_Format" field="Format/String"/>
<source name="G_FormatProfile" field="Format_Profile"/>
<source name="G_CodecID" field="CodecID/String"/>
<source name="G_Duration" field="Duration"/>
<source name="G_OverallBitRateMode" field="OverallBitRate_Mode/String"/>
<source name="G_OverallBitRate" field="OverallBitRate/String"/>
<source name="G_FrameRate" field="FrameRate/String"/>
<source name="G_Album" field="Album" process="fix_cp"/>
<source name="G_PartPosition" field="Part/Position"/>
<source name="G_PartTotal" field="Part/Position_Total"/>
<source name="G_TrackName" field="Track" process="fix_cp"/>
<source name="G_TrackPosition" field="Track/Position"/>
<source name="G_TrackTotal" field="Track/Position_Total"/>
<source name="G_Performer" field="Performer" process="fix_cp"/>
<source name="G_Composer" field="Composer" process="fix_cp"/>
<source name="G_Publisher" field="Publisher" process="fix_cp"/>
<source name="G_Genre" field="Genre" process="fix_cp"/>
<source name="G_EncDate" field="Encoded_Date"/>
<source name="G_RecDate" field="Recorded_Date"/>
<source name="G_RelDate" field="Released_Date"/>
<source name="G_EncodedWith" field="Encoded_Application"/>
<source name="G_EncodedLibrary" field="Encoded_Library"/>
<source name="G_Encoded_Library_Settings" field="Encoded_Library_Settings"/>
<source name="G_EncodedBy" field="EncodedBy" process="fix_cp"/>
<source name="G_Copyright" field="Copyright" process="fix_cp"/>
<source name="G_Cover" field="Cover"/>
<source name="G_Comment" field="Comment" process="fix_cp"/>
<source name="G_LongDescription" field="LongDescription" process="fix_cp"/>
<!-- Video -->
<source name="V_Format" field="Format/String" context="Video"/>
<source name="V_FormatProfile" field="Format_Profile" context="Video"/>
<source name="V_CodecID" field="CodecID" context="Video"/>
<source name="V_BitRateMode" field="BitRate_Mode/String" context="Video"/>
<source name="V_BitRate" field="BitRate/String" context="Video"/>
<source name="V_Width" field="Width" context="Video"/>
<source name="V_Height" field="Height/String" context="Video"/>
<source name="V_FrameRate_Mode" field="FrameRate_Mode/String" context="Video"/>
<source name="V_FrameRate" field="FrameRate/String" context="Video"/>
<source name="V_DisplayAspectRatio" field="DisplayAspectRatio" context="Video"/>
<source name="V_DisplayAspectRatioStr" field="DisplayAspectRatio/String" context="Video"/>
<source name="V_Rotation" field="Rotation" context="Video"/>
<source name="V_Standard" field="Standard" context="Video"/>
<source name="V_ColorSpace" field="ColorSpace" context="Video"/>
<source name="V_ChromaSubsampling" field="ChromaSubsampling/String" context="Video"/>
<source name="V_BitDepth" field="BitDepth/String" context="Video"/>
<source name="V_ScanType" field="ScanType/String" context="Video"/>
<source name="V_Compression_Mode" field="Compression_Mode/String" context="Video"/>
<source name="V_BitsPixel" field="Bits-(Pixel*Frame)" context="Video"/>
<source name="V_StreamSize" field="StreamSize/String" context="Video"/>
<source name="V_EncodedLibrary" field="Encoded_Library" context="Video"/>
<!-- Audio -->
<source name="A_Format" field="Format/String" context="Audio"/>
<source name="A_FormatVersion" field="Format_Version" context="Audio"/>
<source name="A_FormatProfile" field="Format_Profile" context="Audio"/>
<source name="A_FormatSettings" field="Format_Settings" context="Audio"/>
<source name="A_CodecID" field="CodecID" context="Audio"/>
<source name="A_BitRateMode" field="BitRate_Mode/String" context="Audio"/>
<source name="A_BitRate" field="BitRate/String" context="Audio"/>
<source name="A_Channels" field="Channel(s)" context="Audio"/>
<source name="A_ChannelPositions" field="ChannelPositions" context="Audio"/>
<source name="A_SamplingRate" field="SamplingRate/String" context="Audio"/>
<source name="A_BitDepth" field="BitDepth/String" context="Audio"/>
<source name="A_FrameRate" field="FrameRate/String" context="Audio"/>
<source name="A_CompressionMode" field="Compression_Mode/String" context="Audio"/>
<source name="A_StreamSize" field="StreamSize/String" context="Audio"/>
<source name="A_Encoded_Library" field="Encoded_Library" context="Audio"/>
<source name="A_Language" field="Language/String" context="Audio"/>
<!-- Text -->
<source name="T_Format" field="Format/String" context="Text"/>
<source name="T_Language" field="Language/String" context="Text"/>
<!-- Image -->
<source name="I_Format" field="Format/String" context="Image"/>
<source name="I_FormatVersion" field="Format_Version" context="Image"/>
<source name="I_FormatProfile" field="Format_Profile" context="Image"/>
<source name="I_Format_Compression" field="Format_Compression" context="Image"/>
<source name="I_FormatSettings" field="Format_Settings" context="Image"/>
<source name="I_CodecID" field="CodecID" context="Image"/>
<source name="I_Width" field="Width" context="Image"/>
<source name="I_Height" field="Height" context="Image"/>
<source name="I_DisplayAspectRatio" field="DisplayAspectRatio" context="Image"/>
<source name="I_DisplayAspectRatioStr" field="DisplayAspectRatio/String" context="Image"/>
<source name="I_ColorSpace" field="ColorSpace" context="Image"/>
<source name="I_ChromaSubsampling" field="ChromaSubsampling/String" context="Image"/>
<source name="I_BitDepth" field="BitDepth/String" context="Image"/>
<source name="I_Compression_Mode" field="Compression_Mode/String" context="Image"/>
<source name="I_StreamSize" field="StreamSize/String" context="Image"/>
<source name="I_colour_range" field="colour_range" context="Image"/>
<source name="I_Density" field="Density/String" context="Image"/>
</sources>
<columns>
<!-- General -->
<column name="G_Fmt">G_Format</column>
<column name="G_FmtProf">V_FormatProfile</column>
<column name="G_AllFmt" type="script">
<![CDATA[
Output:='';
if (G_Format <> '') then Output:=Output+G_Format;
if (G_FormatProfile <> '') then Output:=Output+'/'+G_FormatProfile;
]]>
</column>
<column name="G_CodecID">G_CodecID</column>
<source name="G_CodecID" field="CodecID/String"/>
<column name="G_Dur">
<unit name="hh:mm:ss" type="script">Output:=TimingFormat('%hh:%mm:%ss', G_Duration);</unit>
<unit name="hh:mm:ss.fff" type="script">Output:=TimingFormat('%hh:%mm:%ss.%fff', G_Duration);</unit>
</column>
<column name="G_OverBitRtMode">G_OverallBitRateMode</column>
<column name="G_OverBitRt">G_OverallBitRate</column>
<column name="G_AllOverBitRt" type="script">
<![CDATA[
Output:='';
if (G_OverallBitRateMode <> '') then Output:=Output+G_OverallBitRateMode;
if (G_OverallBitRate <> '') then Output:=Output+'/'+G_OverallBitRate;
]]>
</column>
<column name="G_FrameRt">G_FrameRate</column>
<column name="G_Album">G_Album</column>
<column name="G_PartPos">G_PartPosition</column>
<column name="G_PartTot">G_PartTotal</column>
<column name="G_AllPart" type="script">
<![CDATA[
Output:='';
if (G_PartPosition <> '') then Output:=Output+G_PartPosition;
if (G_PartTotal <> '') then Output:=Output+'/'+G_PartTotal;
]]>
</column>
<column name="G_TrName">G_TrackName</column>
<column name="G_TrPos">G_TrackPosition</column>
<column name="G_TrTot">G_TrackTotal</column>
<column name="G_AllTr" type="script">
<![CDATA[
Output:='';
if (G_TrackPosition <> '') then Output:=Output+G_TrackPosition;
if (G_TrackTotal <> '') then Output:=Output+'/'+G_TrackTotal;
]]>
</column>
<column name="G_Perf">G_Performer</column>
<column name="G_Compos">G_Composer</column>
<column name="G_Publ">G_Publisher</column>
<column name="G_Genre">G_Genre</column>
<column name="G_RecDate">G_RecDate</column>
<column name="G_EncDate">G_EncDate</column>
<column name="G_RelDate">G_RelDate</column>
<column name="G_AllDate" type="script">
<![CDATA[
Output:='';
if (G_RecDate <> '' AND GetLang() = 'RUS') then Output:=Output+' записано '+G_RecDate;
if (G_EncDate <> '' AND GetLang() = 'RUS') then Output:=Output+' кодировано '+G_EncDate;
if (G_RelDate <> '' AND GetLang() = 'RUS') then Output:=Output+' выпущено '+G_RelDate;
if (G_RecDate <> '' AND GetLang() = 'ENG') then Output:=Output+' recorded '+G_RecDate;
if (G_EncDate <> '' AND GetLang() = 'ENG') then Output:=Output+' encoded '+G_EncDate;
if (G_RelDate <> '' AND GetLang() = 'ENG') then Output:=Output+' released '+G_RelDate;
]]>
</column>
<column name="G_EncWith">G_EncodedWith</column>
<column name="G_EncLib">G_EncodedLibrary</column>
<column name="G_EncBy">G_EncodedBy</column>
<column name="G_AllEnc" type="script">
<![CDATA[
Output:='';
if (G_EncodedWith <> '' AND GetLang() = 'RUS') then Output:=Output+' программа '+G_EncodedWith;
if (G_EncodedLibrary <> '' AND GetLang() = 'RUS') then Output:=Output+' библиотека '+G_EncodedLibrary;
if (G_Encoded_Library_Settings <> '' AND GetLang() = 'RUS') then Output:=Output+' параметры '+G_Encoded_Library_Settings;
if (G_EncodedBy <> '' AND GetLang() = 'RUS') then Output:=Output+' выполнил '+G_EncodedBy;
if (G_EncodedWith <> '' AND GetLang() = 'ENG') then Output:=Output+' программа '+G_EncodedWith;
if (G_EncodedLibrary <> '' AND GetLang() = 'ENG') then Output:=Output+' библиотека '+G_EncodedLibrary;
if (G_Encoded_Library_Settings <> '' AND GetLang() = 'ENG') then Output:=Output+' settings '+G_Encoded_Library_Settings;
if (G_EncodedBy <> '' AND GetLang() = 'ENG') then Output:=Output+' encodedby '+G_EncodedBy;
]]>
</column>
<column name="G_CpyRt">G_Copyright</column>
<column name="G_Cover">G_Cover</column>
<column name="G_Comm">G_Comment</column>
<column name="G_LongDesc">G_LongDescription</column>
<separator/>
<!-- Video -->
<column name="V_Fmt">V_Format</column>
<column name="V_FmtProf">V_FormatProfile</column>
<column name="V_AllFmt" type="script">
<![CDATA[
Output:='';
if (V_Format <> '') then Output:=Output+V_Format;
if (V_FormatProfile <> '') then Output:=Output+'/'+V_FormatProfile;
]]>
</column>
<column name="V_CodecID">V_CodecID</column>
<column name="V_BitRtMode">V_BitRateMode</column>
<column name="V_BitRt">V_BitRate</column>
<column name="V_AllBitRt" type="script">
<![CDATA[
Output:='';
if (V_BitRateMode <> '') then Output:=Output+V_BitRateMode;
if (V_BitRate <> '') then Output:=Output+'/'+V_BitRate;
]]>
</column>
<column name="V_FrameSz" type="script">
<![CDATA[
if (V_Width = '') and (V_Height = '') then
Output:=''
else
Output:=V_Width+'x'+V_Height;
]]>
</column>
<column name="V_FrameRtMode">V_FrameRate_Mode</column>
<column name="V_FrameRt">V_FrameRate</column>
<column name="V_AllFrameRt" type="script">
<![CDATA[
Output:='';
if (V_FrameRate_Mode <> '') then Output:=Output+V_FrameRate_Mode;
if (V_FrameRate <> '') then Output:=Output+'/'+V_FrameRate;
]]>
</column>
<column name="V_DisplAspRtStr">V_DisplayAspectRatioStr</column>
<column name="V_Orient" type="script">
<![CDATA[
uses 'AllDispl';
Output := GetOrientation(V_DisplayAspectRatio);
]]>
</column>
<column name="V_Rotat">V_Rotation</column>
<column name="V_AllDispl" type="script">
<![CDATA[
uses 'AllDispl';
Output:='';
if (V_DisplayAspectRatioStr <> '') then Output:=Output+V_DisplayAspectRatioStr;
if (V_DisplayAspectRatio <> '') then Output:=Output+'/'+GetOrientation(V_DisplayAspectRatio);
if (V_Rotation <> '') then Output:=Output+'/'+V_Rotation;
]]>
</column>
<column name="V_ClrSpc">V_ColorSpace</column>
<column name="V_ChromaSubSampl">V_ChromaSubsampling</column>
<column name="V_AllClr" type="script">
<![CDATA[
Output:='';
if (V_ColorSpace <> '') then Output:=Output+V_ColorSpace;
if (V_ChromaSubsampling <> '') then Output:=Output+'/'+V_ChromaSubsampling;
]]>
</column>
<column name="V_BitDph">V_BitDepth</column>
<column name="V_ScanType">V_ScanType</column>
<column name="V_CompressMode">V_Compression_Mode</column>
<column name="V_BitPxl">V_BitsPixel</column>
<column name="V_StreamSz">V_StreamSize</column>
<column name="V_EncodLib">V_EncodedLibrary</column>
<separator/>
<!-- Audio -->
<column name="A_Fmt">A_Format</column>
<column name="A_FmtVer">A_FormatVersion</column>
<column name="A_FmtProf">A_FormatProfile</column>
<column name="A_FmtSet">A_FormatSettings</column>
<column name="A_AllFmt" type="script">
<![CDATA[
Output:='';
if (A_Format <> '') then Output:=Output+A_Format;
if (A_FormatVersion <> '') then Output:=Output+'/'+A_FormatVersion;
if (A_FormatProfile <> '') then Output:=Output+'/'+A_FormatProfile;
if (A_FormatSettings <> '') then Output:=Output+'/'+A_FormatSettings;
]]>
</column>
<column name="A_CodecID">A_CodecID</column>
<column name="A_BitRtMode">A_BitRateMode</column>
<column name="A_BitRt">A_BitRate</column>
<column name="A_AllBitRt" type="script">
<![CDATA[
Output:='';
if (A_BitRateMode <> '') then Output:=Output+A_BitRateMode;
if (A_BitRate <> '') then Output:=Output+'/'+A_BitRate;
]]>
</column>
<column name="A_Ch">A_Channels</column>
<column name="A_ChPos">A_ChannelPositions</column>
<column name="A_AllCh" type="script">
<![CDATA[
Output:='';
if (A_Channels <> '') then Output:=Output+A_Channels;
if (A_ChannelPositions <> '') then Output:=Output+'/'+A_ChannelPositions;
]]>
</column>
<column name="A_SamplRt">A_SamplingRate</column>
<column name="A_BitDph">A_BitDepth</column>
<column name="A_FrameRt">A_FrameRate</column>
<column name="A_CompressMode">A_CompressionMode</column>
<column name="A_StreamSz">A_StreamSize</column>
<column name="A_EncLib">A_Encoded_Library</column>
<column name="A_Lng">A_Language</column>
<separator/>
<column name="T_SubTitlFmt">T_Format</column>
<column name="T_SubTitlLng">T_Language</column>
<separator/>
<!-- Image -->
<column name="I_Fmt">I_Format</column>
<column name="I_FmtVer">I_FormatVersion</column>
<column name="I_FmtProf">I_FormatProfile</column>
<column name="I_FmtCompress">I_Format_Compression</column>
<column name="I_FmtSet">I_FormatSettings</column>
<column name="I_AllFmt" type="script">
<![CDATA[
Output:='';
if (I_Format <> '' AND GetLang() = 'RUS') then Output:=Output+' формат '+I_Format;
if (I_FormatVersion <> '' AND GetLang() = 'RUS') then Output:=Output+'/ версия '+I_FormatVersion;
if (I_FormatProfile <> '' AND GetLang() = 'RUS') then Output:=Output+'/ профиль '+I_FormatProfile;
if (I_Format_Compression <> '' AND GetLang() = 'RUS') then Output:=Output+'/ сжатие '+I_Format_Compression;
if (I_FormatSettings <> '' AND GetLang() = 'RUS') then Output:=Output+'/ настройки '+I_FormatSettings;
if (I_Format <> '' AND GetLang() = 'ENG') then Output:=Output+' format '+I_Format;
if (I_FormatVersion <> '' AND GetLang() = 'ENG') then Output:=Output+'/ version '+I_FormatVersion;
if (I_FormatProfile <> '' AND GetLang() = 'ENG') then Output:=Output+'/ profile '+I_FormatProfile;
if (I_Format_Compression <> '' AND GetLang() = 'ENG') then Output:=Output+'/ compression '+I_Format_Compression;
if (I_FormatSettings <> '' AND GetLang() = 'ENG') then Output:=Output+'/ settings '+I_FormatSettings;
]]>
</column>
<column name="I_CodecID">I_CodecID</column>
<column name="I_ImgSz" type="script">
<![CDATA[
if (I_Width = '') and (I_Height = '') then
Output:=''
else
Output:=I_Width+'x'+I_Height;
]]>
</column>
<column name="I_DisplAspRtStr">I_DisplayAspectRatioStr</column>
<column name="I_Orient" type="script">
<![CDATA[
uses 'AllDispl';
Output := GetOrientation(I_DisplayAspectRatio);
]]>
</column>
<column name="I_AllDispl" type="script">
<![CDATA[
uses 'AllDispl';
Output:='';
if (I_DisplayAspectRatioStr <> '') then Output:=Output+I_DisplayAspectRatioStr;
if (I_DisplayAspectRatio <> '') then Output:=Output+'/'+GetOrientation(I_DisplayAspectRatio);
]]>
</column>
<column name="I_ClrSpc">I_ColorSpace</column>
<column name="I_ChromaSubSampl">I_ChromaSubsampling</column>
<column name="I_AllClr" type="script">
<![CDATA[
Output:='';
if (I_ColorSpace <> '') then Output:=Output+I_ColorSpace;
if (I_ChromaSubsampling <> '') then Output:=Output+'/'+I_ChromaSubsampling;
]]>
</column>
<column name="I_BitDph">I_BitDepth</column>
<column name="I_CompressMode">I_Compression_Mode</column>
<column name="I_StreamSz">I_StreamSize</column>
<column name="I_ClrRange">I_colour_range</column>
<column name="I_Density">I_Density</column>
</columns>
<!--
<funclibs>
<funclib name="Common">
</funclib>
-->
<funclib name="AllDispl">
<![CDATA[
function GetOrientation(sDisplayAspectRatio);
begin
Output:='Test';
if sDisplayAspectRatio <> '' then
begin
case sDisplayAspectRatio of
'0'..'0.999': Result:=GetLang('Portrait');
'1.000': Result:=GetLang('Square');
else Result:=GetLang('Landscape');
end;
end;
end;
]]>
</funclib>
<!-- </funclibs> -->
|
В языковый файл я просто добавил свои данные.
 TCMediaInfo.lng
Code: |
[RUS]
; ;; General
; G_Fmt=Формат общий
; G_FmtProf=Профиль формата
; G_AllFmt=Всё Аудиформат
; G_CodecID=Идентификатор кодека
; G_Dur=Продолжительность
; G_OverBitRtMode=Режим общего битрейта
; G_OverBitRt=Общий битрейт
; G_AllOverBitRt=Всё Общий битрейт
; G_FrameRt=Частота кадров общая
; G_Album=Альбом
; G_PartPos=Расположение части
; G_PartTot=Всего частей
; G_AllPart=Всё Нумерация частей
; G_TrName=Имя трека
; G_TrPos=Расположение трека
; G_TrTot=Всего треков
; G_AllTr=Всё Нумерация треков
; G_Perf=Исполнитель
; G_Compos=Композитор
; G_Publ=Издатель
; G_Genre=Жанр
; G_RecDate=Дата записи
; G_EncDate=Дата кодирования
; G_RelDate=Дата выпуска
; G_AllDate=Всё Дата обработки
; G_EncWith=Программа кодирования
; G_EncLib=Библиотека кодирования
; G_EncBy=Кодирование выполнил
; G_AllEnc=Всё Кодирование
; G_CpyRt=Авторское право
; G_Cover=Обложка
; G_Comm=Комментарий
; G_LongDesc=Описание
; ;; Video
; V_Fmt=Видеоформат
; V_FmtProf=Профиль формата
; V_AllFmt=Всё Видеоформат
; V_CodecID=Идентификатор кодека
; V_BitRtMode=Вид битрейта
; V_BitRt=Битрейт видео
; V_AllBitRt=Всё Видеобитрейт
; V_FrameSz=Размер кадра
; V_FrameRtMode=Режим частоты кадров
; V_FrameRt=Частота кадров
; V_AllFrameRt=Всё Частота кадров
; V_DisplAspRtStr=Соотношение сторон дисплея
; V_Orient=Ориентация
; V_Rotat=Поворот
; V_AllDispl=Всё Дисплей
; V_Standard=Стандарт вещания
; V_ClrSpc=Цветовое пространство
; V_ChromaSubSampl=Цветовая субдискретизация
; V_AllClr=Всё Цвет
; V_BitDph=Битовая глубина
; V_ScanType=Тип развёртки
; V_CompressMode=Метод сжатия
; V_BitPxl=Бит/(Пиксели*Кадры)
; V_StreamSz=Размер потока
; V_EncodLib=Библиотека кодирования
; ;; Audio
; A_Fmt=Аудиоформат
; A_FmtVer=Версия формата
; A_FmtProf=Профиль формата
; A_FmtSet=Настройки формата
; A_AllFmt=Всё Аудиформат
; A_CodecID=Идентификатор кодека
; A_BitRtMode=Вид битрейта
; A_BitRt=Битрейт аудио
; A_AllBitRt=Всё Аудиобитрейт
; A_Ch=Число каналов
; A_ChPos=Позиции каналов
; A_AllCh=Всё Каналы
; A_SamplRt=Частота дискретизации
; A_BitDph=Битовая глубина
; A_FrameRt=Частота кадров
; A_CompressMode=Метод сжатия
; A_StreamSz=Размер потока
; A_EncLib=Библиотека кодирования
; A_Lng=Язык
; ;; Text
; T_SubTitlFmt=Формат субтитров
; T_SubTitlLng=Язык субтитров
; ;; Imagine
; I_Fmt=Формат изображения
; I_FmtVer=Версия формата
; I_FmtProf=Профиль формата
; I_FmtCompress=Сжатие
; I_FmtSet=Настройки формата
; I_AllFmt=Всё Формат изображения
; I_CodecID=Идентификатор кодека
; I_ImgSz=Размер сторон
; I_DisplAspRtStr=Соотношение сторон дисплея
; I_Orient=Ориентация
; I_AllDispl=Всё Дисплей
; I_ClrSpc=Цветовое пространство
; I_ChromaSubSampl=Цветовая субдискретизация
; I_AllClr=Всё Цвет
; I_BitDph=Битовая глубина
; I_CompressMode=Метод сжатия
; I_StreamSz=Размер потока
; I_ClrRange=Цветовой диапазон
; I_Density=Плотность
|
 CustomFields.ini
Code: |
[CustomFields]
AutoLoad=0
Titles=Видео|Картинки|Музыка
Widths1=80,30,50,85,95,70,105,120,205,75,120,80,105,70,175,65,130,60,55,50,75,60,95,210,85,80,105,60,130,65,65,55
Headers1=Размер\nФормат общий/Профиль\nИдентификатор кодека\nПродолжительность\nБитрейт общий Режим/Битрейт\nДата записи/кодирования/выпуска\nКодирование Программа/Библиотека/Параметры/Выполнил\nЧастота кадров общая\nВидеоформат/Профиль\nИдентификатор кодека\nБитрейт Режим/Битрейт\nРазмер кадра\nДисплей Соотношение сторон/Ориентация/Поворот\nСтандарт вещания\nЦвет Пространство/Субдискретизация\nБитовая глубина\nТип развёртки\nМетод сжатия\nБит/(Пиксели*Кадры)\nРазмер потока\nБиблиотека кодирования\nАудио Формат/Версия/Профиль/Настройки\nКаналы Число/Позиции\nЧастота дискретизации\nЧастота кадров\nРазмер потока\nБиблиотека кодирования\nЯзык\nФормат субтитров\nЯзык субтитров
Contents1=[=tc.size]\n[=tcmediainfo.G_AllFmt]\n[=tcmediainfo.G_CodecID]\n[=tcmediainfo.G_Dur]\n[=tcmediainfo.G_AllOverBitRt]\n[=tcmediainfo.G_AllDate]\n[=tcmediainfo.G_AllEnc]\n[=tcmediainfo.G_FrameRt]\n[=tcmediainfo.V_AllFmt]\n[=tcmediainfo.V_CodecID]\n[=tcmediainfo.V_AllBitRt]\n[=tcmediainfo.V_FrameSz]\n[=tcmediainfo.V_AllDispl]\n[=tcmediainfo.V_Standard]\n[=tcmediainfo.V_AllClr]\n[=tcmediainfo.V_BitDph]\n[=tcmediainfo.V_ScanType]\n[=tcmediainfo.V_CompressMode]\n[=tcmediainfo.V_BitPxl]\n[=tcmediainfo.V_StreamSz]\n[=tcmediainfo.V_EncodLib]\n[=tcmediainfo.A_AllFmt]\n[=tcmediainfo.A_AllCh]\n[=tcmediainfo.A_SamplRt]\n[=tcmediainfo.A_FrameRt]\n[=tcmediainfo.A_StreamSz]\n[=tcmediainfo.A_EncLib]\n[=tcmediainfo.A_Lng]\n[=tcmediainfo.T_SubTitlFmt]\n[=tcmediainfo.T_SubTitlLng]
Options1=-1|1|96
Widths2=80,30,50,185,90,105,145,130,135,90,60,70,40,105,25,55,45,40,40,90,70,80,65
Headers2=Размер\nКартинки Формат/Версия/Профиль/Сжатие/Настройки\nИдентификатор кодека\nРазмер сторон пикселей/мм\nДисплей Соотношение сторон/Ориентация\nЦвет Пространство/Субдискретизация\nБитовая глубина/Каналов/Глубина цвета\nМетод сжатия/Сжатие\nРазмер потока\nЦветовой диапазон\nПлотность\nИзображений, эскизов, кадров\nСлоёв\nЧересстрочный\nAlpha-канал\nАнимация\nВерсия SVG\nВстроенные изображения\nПродолжительность\nРасширенный формат\nКоличество иконок
Contents2=[=tc.size]\n[=tcmediainfo.I_AllFmt]\n[=tcmediainfo.I_CodecID]\n[=webpinfo.Width][=" x "webpinfo.Height][=svginfo.Calculated Width][=" x "svginfo.Calculated Height] [=tcmediainfo.I_ImgSz][="/"wdx4i.docw][=" x "wdx4i.doch]\n[=tcmediainfo.I_AllDispl]\n[=tcmediainfo.I_AllClr]\n[=webpinfo.Bit Depth][=tcmediainfo.I_BitDph] [=wdx4i.bps][="x"wdx4i.spp][="="wdx4i.depth]\n[=webpinfo.Encoding][=tcmediainfo.I_CompressMode] [=wdx4i.mode][="/"wdx4i.compr]\n[=tcmediainfo.I_StreamSz]\n[=tcmediainfo.I_ClrRange]\n[=tcmediainfo.I_Density]\n[=wdx4i.images][=webpinfo.Frame Count]\n[=wdx4i.layers]\n[=pnginfo.Interlaced]\n[=pnginfo.Alpha][=webpinfo.Alpha]\n[=pnginfo.Animation][=webpinfo.Animation]\n[=svginfo.SVG Version]\n[=svginfo.Have Embedded Image]\n[=webpinfo.Duration]\n[=webpinfo.Extended Format]\n[=iconlibrary.Number Of Icons]
Options2=-1|1|96
Widths3=80,30,50,120,80,70,105,100,90,100,90,100,100,100,100,120,205,80,35,120,120,210,80,90,85,80,60,105,50,60,45
Headers3=Размер\nФормат общий/Профиль\nИдентификатор кодека\nПродолжительность\nБитрейт общий Режим/Битрейт\nАльбом\nЧасть Расположение/Всего\nТрек Имя\nТрек Расположение/Всего\nИсполнитель\nКомпозитор\nИздатель\nЖанр\nДата записи/кодирования/выпуска\nКодирование Программа/Библиотека/Параметры/Выполнил\nАвторское право\nОбложка\nКомментарий\nОписание\nАудио Формат/Версия/Профиль/Настройки\nИдентификатор кодека\nВид битрейта/Битрейт\nКаналы Число/Позиции\nЧастота дискретизации\nБитовая глубина\nЧастота кадров\nМетод сжатия\nРазмер потока\nЯзык
Contents3=[=tc.size]\n[=tcmediainfo.G_AllFmt]\n[=tcmediainfo.G_CodecID]\n[=tcmediainfo.G_Dur]\n[=tcmediainfo.G_AllOverBitRt]\n[=tcmediainfo.G_Album]\n[=tcmediainfo.G_AllPart]\n[=tcmediainfo.G_TrName]\n[=tcmediainfo.G_AllTr]\n[=tcmediainfo.G_Perf]\n[=tcmediainfo.G_Compos]\n[=tcmediainfo.G_Publ]\n[=tcmediainfo.G_Genre]\n[=tcmediainfo.G_AllDate]\n[=tcmediainfo.G_AllEnc]\n[=tcmediainfo.G_CpyRt]\n[=tcmediainfo.G_Cover]\n[=tcmediainfo.G_Comm]\n[=tcmediainfo.G_LongDesc]\n[=tcmediainfo.A_AllFmt]\n[=tcmediainfo.A_CodecID]\n[=tcmediainfo.A_AllBitRt]\n[=tcmediainfo.A_AllCh]\n[=tcmediainfo.A_SamplRt]\n[=tcmediainfo.A_BitDph]\n[=tcmediainfo.A_FrameRt]\n[=tcmediainfo.A_CompressMode]\n[=tcmediainfo.A_StreamSz]\n[=tcmediainfo.A_Lng]
Options3=-1|1|96
|
Обновил файлы 08.06.2025. Исправил ошибки. Добавил новые поля. В переводе из-за выявленной в ТС ошибки с локализацией файлов, перевод закомментирован. Если не будете менять данные, можно использовать перевод. Глючит только при редактировании. В информации по картинкам добавлены поля из других плагинов.
Last edited by AkulaBig on Sun Jun 08, 2025 16:21; edited 7 times in total |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 329
|
(Separately) Posted: Mon Jun 02, 2025 17:47 Post subject: |
|
|
Думал на этом закончились мои разборки с TCMediaInfo, если не считать ожидания изменений в листерной части. Но теперь понял, что Image тоже надо делать через TCMediaInfo. Конечно придется дополнять инфу из других плагинов, как у меня в хинтах сделано. Но за основу надо брать MI. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 329
|
(Separately) Posted: Tue Jun 03, 2025 18:24 Post subject: |
|
|
Loopback
Вот так можно было-бы записывать: <separator>Image<separator/>. Сложно такое сделать? |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1526
|
(Separately) Posted: Tue Jun 03, 2025 22:50 Post subject: |
|
|
AkulaBig wrote: | Вот так можно было-бы записывать: <separator>Image<separator/>. Сложно такое сделать? |
Если имеется в виду использовать картинку в качестве разделителя - да, сложно. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 329
|
(Separately) Posted: Tue Jun 03, 2025 23:38 Post subject: |
|
|
Loopback wrote: | Если имеется в виду использовать картинку в качестве разделителя - да, сложно. |
Ни в коем случае. Вставил просто слово, над которым сейчас работаю. Я имею ввиду текст вставить. Сейчас у нас при выборе полей из TCMediaInfo появляется список, разделенный -------- Это определяет <separator/> Я конечно в первом поле хотя-бы обозначаю Аудиоформат, Видеоформат, Общий формат. Но хотелось-бы оставить просто Формат. А секции разделять -----Общее---- -----Аудио---- ----Видео---- -------Картинка----- Так как названия многих полей одинаковы, без такой конкретики есть некоторые проблемы с ориентацией, из какого раздела поле вставить в колонку. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1526
|
(Separately) Posted: Wed Jun 04, 2025 12:12 Post subject: |
|
|
AkulaBig
Теперь ясно. Технически это несложно, но не сработает.
Сейчас тотал формирует разделители, когда плагин возвращает поле с именем "-". Хотя это, кажется, не совсем документированная фича, во всяком случае в справке по плагинам про неё ни слова.
Так что разделитель легко сымитировать обычным объявлением колонки, и оно будет работать:
Code: | <column name="-"></column> |
При добавлении любых других символов специальное значение имени теряется и получается обычное поле:
Code: | <column name="-Image"></column> |
|
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 772
|
(Separately) Posted: Wed Jun 04, 2025 17:35 Post subject: |
|
|
AkulaBig
Скачал сборку, посмотреть, что получилось.
Не уверен, что мне понравились названия полей формата G_*, V_* и A_*. Не могу сказать, что они хорошо смотрятся. Почему был сделан такой выбор и почему нельзя было оставить длинные названия полей? Например, название "Display aspect ratio" вместо V_DisplAspRtStr. По-моему, первый вариант смотрится лучше второго.
Есть составные поля, подводящие некий итог - V_AllDispl, A_AllBitRt или A_AllCh - но нет привычных полей All video as string и All audio as string, где раньше подводился итог по всему видео и аудио. При этом в ваших полях зачем-то используется слэш - 4:3/Ландшафтная/0.000; Constant/128 kb/s, когда, на мой взгляд, лучше было оставить запятую, как это было изначально сделано, т.е. AVC, 2.6 Мбит/с, 1440x1080, 50.000 к/с; CBR@127 kbps, 44100 Гц, 2 канала.
И кстати, добавьте в сборку WDX Guide, пользователям он тоже будет нужен, даже тем, кто им не пользуется. |
|
Back to top |
|
 |
|
|
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
|