Einzelnen Beitrag anzeigen

Benutzerbild von hibbert
hibbert

Registriert seit: 26. Aug 2003
Ort: Berlin
262 Beiträge
 
Delphi 2005 Personal
 
#1

id3 Tags setzten funktioniert nur bedingt...

  Alt 17. Nov 2006, 16:14
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
  Mit Zitat antworten Zitat