hi,
ich bin gerade dabei mir ein kleines Tool zur MP3 Verwaltung zu schreiben und dabei möchte ich gerne die ID3 Tags setzten. Dafür habe ich mir folgende kleine Procedur zurecht geschnippelt:
Delphi-Quellcode:
procedure SaveMP3File(AFile, ATitle, AArtist, AAlbum, AGenre,AYear,ATrack: String);
var
MyId3v1Tag: TID3v1Tag;
MyId3v2Tag: TID3v2Tag;
begin
MyId3v1Tag := TID3v1Tag.Create;
if form1.CheckBox2.Checked then MyId3v2Tag := TID3v2Tag.Create;
try
form1.Lblv1Artist.Text:=AArtist;
form1.Lblv1Titel.Text:=ATitle;
if form1.CheckBox2.Checked then
begin
MyId3v2Tag.Title := ATitle;
MyId3v2Tag.Artist := AArtist;
MyId3v2Tag.Album := AAlbum;
MyId3v2Tag.Genre := AGenre;
MyId3v2Tag.Year := AYear;
MyId3v2tag.Track := ATrack;
MyId3v2Tag.Comment := form1.Lblv1Comment.Text;
end;
MyId3v1Tag.Title := ATitle;
MyId3v1Tag.Artist := AArtist;
MyId3v1Tag.Album := AAlbum;
MyId3v1Tag.Genre := AGenre;
MyId3v1Tag.Year := AYear;
MyId3v1tag.Track := ATrack;
MyId3v1Tag.Comment := form1.Lblv1Comment.Text;
// schreibgeschütze MP3 werden so ebenfalls geändert, weil der schreibschutz aufgehoben wird
if (FileGetAttr(aFile) and faReadOnly) > 0 then FileSetAttr(afile, FileGetAttr(afile) xor faReadOnly);
MyId3v1Tag.WriteToFile(aFile);
if form1.CheckBox2.Checked then MyId3v2Tag.WriteToFile(aFile);
finally
if form1.CheckBox2.Checked then MyId3v2Tag.free;
MyId3v1Tag.free;
end;
end;
Nun habe ich folgendes Problem:
Einige MP3-Dateien haben bereits ID3 Tags. Doch nicht bei allen MP3-Dateien werden die Tags geupdatet. Höchstens wenn ich den ID3v2Tag verwende, aber das dauert mir teilw. echt zu lange bzw da passiert genau das gleiche...
Dazu kommt noch, dass der Kommentar nicht übernommen wird.
Auch wenn ich vorher die ID3Tags entferne
MyId3v2Tag.RemoveFromFile(AFile);
bleibt das Ergebnis das gleiche, nur teilw. ersetzungen...
Meine Fragen nun:
• Wie kann ich wirklich alle MP3 Dateien updaten?
• Wie bekomme ich es hin, dass auch der Kommentar mit übernommen wird?
Vielen dank.
MfG Hibbert