Wstęp
Biblioteka ID3Lite, będąca docelowo częścią większego projektu, jest przeznaczona do modyfikacji tagów MP3 w wersji ID3v1/1.1 (pełna obsługa standardu) i ID3v2.3/2.4 implementująca najważniejsze funkcje. Biblioteka jest w postaci DLL przeznaczonej dla środowiska .NET.
Tagi zapisywane są w wersji ID3v1.1 i ID3v2.3 (kompatybilność z WMP/Windows). Obsługiwane są wszystkie cztery metody kodowania znaków (ISO-8859-1 - w rzeczywistości natywny dla Windows - ANSI, UTF-16, UTF-16BE, UTF-8) z tym, że zapisując tagi do wersji ID3v2.3 mamy do wyboru tylko pierwsze dwa.
Standard ID3v1 nie wspiera polskich znaków, ale jest możliwość ich używania z zazanczeniem, że nie każdy program może poprawnie odczytywać te znaki. W przypadku ID3v2.x mamy już UTF-16, UTF-8.
Biblioteka jest podzielona na dwie klasy, które obsługują konkretne wersje tagów. Może nie jest to wygodne, ale w przyszłości być może zostanie napisana klasa w stylu ID3Manager, gdzie nie będzie potrzeby odwoływania się do poszczególnych wersji tagów za pomocą rożnych klas.
Przykładowy kod.
using ID3.ID3v1;
ID3v1 id3 = new ID3v1("song.mp3");
if (id3.HasTag())
{
MessageBox.Show("Artist: " + id3.Artist);
MessageBox.Show("Album: " + id3.Album);
MessageBox.Show("Title: " + id3.Title);
}
else
{
id3.Artist = "Artist";
id3.Album = "Album";
id3.Title = "Title";
id3.SaveToFile("song.mp3");
}
using ID3.ID3v2;
ID3v2 id3 = new ID3v2("song.mp3");
if (id3.HasTag())
{
MessageBox.Show("Artist: " + id3.Artist);
// OR
// MessageBox.Show("Artist: " + id3.Frames[ID3v2.FramesID.TPE1]);
// Remove Artist (null or empty string)
id3.Artist = null;
// Retrieve all frames
foreach (DictionaryEntry frame in id3.Frames)
{
MessageBox.Show(String.Format("{0} = {1}", frame.Key, frame.Value));
}
}
else
{
id3.Album = "Album";
id3.Title = "Title";
// The 'Copyright/Legal information' frame
id3.Frames[ID3v2.FramesID.WCOP] = "http://blog.kacki.pl";
// Content type
id3.Frames[ID3v2.FramesID.TCON] = "(31)"; // Trance code (or just "Trance" string)
id3.SaveToFile("song.mp3");
}
Ograniczenia
Obsługiwane są wszystkie ramki tekstowe z prefiksem T (oprócz TXXX) i W (oprócz WXXX), gdzie X oznacza dowolny znak).
Więcej informacji o ramkach uzyskamy na stronie
http://www.id3.org/id3v2.4.0-frames.
Wszelkie opinie na temat biblioteki proszę zamieszczać na
forum.