Falls du meinen Codeschnipsel produktiv einsetzt, dann denk aber daran, dass du in den neu erstellten ID3-Tag noch weitere Informationen vom alten einfügst (mindestens noch Jahr, Kommentar, Genre). Und den alten Tag nur dann durch neuen, WMP-Kompatiblen ersetzt, wenn es nötig ist, also durch eine Abfrage der Version
Delphi-Quellcode:
if MP3tags.Version.Major = 3 then
// vorhandenen Tag schreiben, WMP kommt damit klar
MP3tags.WriteToFile(mp3File)
else
// neu gebauten Tag schreiben. Dabei gehen möglicherweise Daten verloren
v23Tag.WriteToFile(mp3file);
Dass Daten möglicherweise verloren gehen liegt daran, dass ich in dem Codeschnipsel die "dreckige" Variante für die Konvertierung von 2.3 nach 2.4 gewählt habe, und nicht jeden tatsächlich vorhandenen Frame aktualisiere.
Danke, ja das habe ich bereits getan.
Habe bei 6000 Titeln das PRIV: Frame entfernt.
Mache die Anwendung fertig und lasse die drüber laufen.
Delphi-Quellcode:
v23Tag.Artist := MP3Tags.Artist;
v23Tag.Album := MP3Tags.Album;
v23Tag.Title := MP3Tags.Title;
v23Tag.Year := MP3Tags.Year;
v23Tag.Track := MP3Tags.Track;
v23Tag.Genre := MP3Tags.Genre;
v23Tag.Rating := 128;
for i := 1
to 16
do
begin
b := Random(255);
GUID.
Write(b, 1);
end;
Anbei noch das Tool desiccate compiliert und für VS2017 angepasst.
Damit können private Frames, Comments, Ufid's aus dem Tag entfernt werden.
Es ist sehr zuverlässig und hat bei mir noch keinen Tag zerstört.
gruss