Difference between revisions of "ReNamer:Scripts:TrID"
Jump to navigation
Jump to search
(first version) |
(→Code: source tag) |
||
Line 10: | Line 10: | ||
Author: Denis Kozlov. Date: 16 Dec 2008. Initial version. Sets the file extension to the top matching extension. Can be easily extended. At the moment works only on ANSI filenames (non Unicode). | Author: Denis Kozlov. Date: 16 Dec 2008. Initial version. Sets the file extension to the top matching extension. Can be easily extended. At the moment works only on ANSI filenames (non Unicode). | ||
− | < | + | <source> |
{ TrID Script } | { TrID Script } | ||
Line 66: | Line 66: | ||
FileName := WideExtractBaseName(FileName)+'.'+GetTopExtensions(1); | FileName := WideExtractBaseName(FileName)+'.'+GetTopExtensions(1); | ||
end. | end. | ||
− | </ | + | </source> |
Revision as of 02:03, 3 August 2009
This script integrates a famous TrID library which is used for detecting file extensions.
Requirements
- ReNamer Beta from 5 Dec 2008 or later
- TrIDLib.dll in ReNamer's folder (http://mark0.net/code-tridlib-e.html)
- TrIDDefs.TRD in ReNamer's folder (http://mark0.net/soft-trid.html)
Code
Author: Denis Kozlov. Date: 16 Dec 2008. Initial version. Sets the file extension to the top matching extension. Can be easily extended. At the moment works only on ANSI filenames (non Unicode).
{ TrID Script }
// TrID DLL exported functions
function TridAnalyze: integer;
external 'TrID_Analyze@TrIDLib.dll stdcall';
function TridSubmitFileA(szFileName: pchar): integer;
external 'TrID_SubmitFileA@tridlib.dll stdcall';
function TridLoadDefsPack(szPath: pchar): integer;
external 'TrID_LoadDefsPack@tridlib.dll stdcall';
function TridGetInfo(lInfoType: integer; lInfoIdx: integer; sBuf: pchar): integer;
external 'TrID_GetInfo@tridlib.dll stdcall';
// Constants for TrID_GetInfo
const
TRID_GET_RES_NUM = 1; // Get the number of results available
TRID_GET_RES_FILETYPE = 2; // Filetype descriptions
TRID_GET_RES_FILEEXT = 3; // Filetype extension
TRID_GET_RES_POINTS = 4; // Matching points
TRID_GET_VER = 1001; // TrIDLib version (major * 100 + minor)
TRID_GET_DEFSNUM = 1004; // Number of filetypes definitions loaded
function GetTopExtensions(Max: Integer): String;
var
S: String;
Num, I: Integer;
begin
Result := '';
SetLength(S, 100);
Num := TridGetInfo(TRID_GET_RES_NUM, 0, PChar(S));
if Num > 0 then
begin
if Num > Max then
Num := Max;
for I:=1 to Num do
begin
TridGetInfo(TRID_GET_RES_FILEEXT, I, PChar(S));
if I > 1 then Result := Result + '|';
Result := Result + String(PChar(S));
end;
end;
end;
var
Initialized: Boolean;
begin
if not Initialized then
begin
TridLoadDefsPack('');
Initialized := True;
end;
TridSubmitFileA(PChar(FilePath));
if TridAnalyze <> 0 then
FileName := WideExtractBaseName(FileName)+'.'+GetTopExtensions(1);
end.