Получение MP3 тэга
Автор: Victor
WEB-сайт: http://delphibase.endimus.com
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение MP3 тэга
Функция получает ID3v1 тэг из указанного mp3-файла.
Зависимости: uses System :)
Автор: Victor, zazoo@ukr.net, ICQ:149676405, Киев
Copyright: Собственное написание
Дата: 06 мая 2002 г.
***************************************************** }
type
TMP3Tag = record
FileName, Title, Artist, Album, Year, Comment: string;
end;
function GetMP3Tag(fn: string): TMP3Tag;
var
tag: array[0..127] of char;
f: file;
i: byte;
s: string;
procedure DelSpace(var s: string);
begin // Удаляет пробелы и символы
// #0 в конце строки.
if length(s) = 0 then
exit;
while s[length(s)] in [' ', #0] do
begin
delete(s, length(s), 1);
if s = '' then
break;
end;
end;
begin
result.FileName := fn;
result.Title := '';
result.Artist := '';
result.Album := '';
result.Year := '';
result.Comment := '';
AssignFile(F, fn); // Открываем файл
{$I-} // с проверкой его существования :)
Reset(F, 1);
Seek(F, FileSize(F) - 128); // Читаем тэг - последние 128 байт
BlockRead(f, tag, 128);
CloseFile(F);
{$I+}
if IOResult <> 0 then
begin
exit;
end;
s := '';
for i := 0 to 127 do
s := s + tag[i];
if copy(s, 1, 3) = 'TAG' then // В файле есть тэг - разбираем его
begin
result.Title := copy(s, 4, 30);
DelSpace(result.title);
result.Artist := copy(s, 34, 30);
DelSpace(result.artist);
result.Album := copy(s, 64, 30);
DelSpace(result.album);
result.Year := copy(s, 94, 4);
DelSpace(result.year);
result.Comment := copy(s, 98, 30);
DelSpace(result.comment);
end;
end;
Пример использования:
var
Tag: TMP3Tag;
begin
if OpenDialog1.Execute then
Tag := GetMP3Tag(OpenDialog1.FileName);
end;
|