Registriert seit: 20. Nov 2010
Ort: Sachsen-Anhalt, Region Magdeburg
13 Beiträge
Delphi 7 Personal
|
AW: Mp3FileUtils
16. Aug 2011, 15:24
Delphi-Quellcode:
type
TAudioInf=class
private
procedure GetMp3Info;
procedure GetWmaInfo;
procedure SetUnknown;
public
Interpret: string;
Titel : string;
Pfad : string;
Album : string;
Jahr : string;
Dauer : integer;
//Titelinformationsprozeduren
procedure GetAudioInfo(FileName: string);
function GetPlaylistTitel:string;
end;
implementation
uses
SysUtils, Mp3FileUtils, ATL_WMAfile, Classes;
//*********************************
//Prozeduren für Titelinformationen
//*********************************
//Hauptprozedur für Titelinformationen
procedure TAudioInf.GetAudioInfo(FileName: string);
begin
Pfad := filename;
if (AnsiLowerCase(ExtractFileExt(FileName)) = '.mp3') then
GetMp3Info
else
if AnsiLowerCase(ExtractFileExt(FileName)) = '.wma' then
GetWMAInfo
else
SetUnknown;
if Interpret='' then Interpret:='Unbekannter Interpret';
if Album='' then Album:='Unbekanntes Album';
if Jahr='' then Jahr:='unbekanntes Jahr';
end;
//Prozedur für Titelinformationen von MP3-Dateien
procedure TAudioInf.GetMp3Info;
var
MpegInfo: TMpegInfo;
ID3v2Tag: TID3V2Tag;
ID3v1tag: TID3v1Tag;
Stream: TFileStream;
begin
// Daten mit MP3FileUtils auslesen
Mpeginfo:=TMpegInfo.Create;
ID3v2Tag:=TID3V2Tag.Create;
ID3v1tag:=TID3v1Tag.Create;
Stream := TFileStream.Create(Pfad, fmOpenRead or fmShareDenyWrite);
try
id3v1tag.ReadFromStream(Stream);
Stream.Seek(0, sobeginning);
Id3v2tag.ReadFromStream(Stream);
if Not id3v2Tag.exists then
Stream.Seek(0, sobeginning)
else
Stream.Seek(id3v2tag.size, soFromBeginning);
Mpeginfo.LoadFromStream(Stream);
Stream.free;
//Daten übertragen
if mpeginfo.FirstHeaderPosition >- 1 then
begin
if id3v2tag.artist <> '' then
Interpret := id3v2tag.artist
else
Interpret := id3v1tag.artist;
if id3v2tag.Album <> '' then
Album :=id3v2tag.Album
else
Album:=id3v1tag.Album;
if id3v2tag.Year<> '' then
Jahr:=id3v2tag.Year
else
Jahr:=id3v1tag.Year;
if id3v2tag.title <> '' then
Titel := id3v2tag.title
else
if id3v1tag.title <> '' then
Titel := id3v1tag.title
else
Titel := ExtractFileName(Pfad);
Dauer := mpeginfo.dauer;
end else
SetUnknown;
finally
MpegInfo.Free;
Id3v2Tag.Free;
Id3v1Tag.Free;
end;
end;
//Prozedur für Titelinformationen von WMA-Dateien
procedure TAudioInf.GetWmaInfo;
var
wmaFile: TWMAfile;
begin
if Not FileExists(Pfad) then
begin
SetUnknown;
exit;
end;
try
wmaFile := TWMAFile.create;
if wmaFile.ReadFromFile(Pfad) then
begin
if wmaFile.Title <> '' then
Titel := wmaFile.Title
else
Titel := ExtractFilename(Pfad);
Interpret := wmaFile.Artist;
Dauer := Round(wmaFile.Duration);
Album :=wmaFile.Album;
Jahr :=wmaFile.Year;
end else
SetUnknown;
finally
wmaFile.Free;
end;
end;
//Prozedur für Titelinformationen von unbekannten Dateien
procedure TAudioInf.SetUnknown;
begin
Titel := ExtractFileName(Pfad);
Interpret := '';
Dauer := 0;
end;
//Prozedur für Titelinformationen nach %Interpret%-%Titel%
function TAudioInf.GetPlaylistTitel:string;
begin
if Trim(Interpret)='' then
result := Titel
else
result := Interpret + ' - ' + Titel;
end;
|
|
Zitat
|