private string TranslateGenre(string content) { if (content == null || content.Length == 0) { return(null); } // Written as "Name" ? if (content[0] != '(') { return(content); } int pos = content.IndexOf(')'); if (pos == -1) { return(content); } // Written as "(id)" ? if (pos == content.Length - 1) { int num = Convert.ToInt32(content.Substring(1, content.Length - 2)); return(TagGenres.Get(num)); } // Written as "(id)Name" ? return(content.Substring(pos + 1)); }
public bool Read(Id3Tag tag, Stream mp3Stream) { //Check wether the file contains an Id3v1 tag-------------------------------- mp3Stream.Seek(-128, SeekOrigin.End); byte[] b = new byte[3]; mp3Stream.Read(b, 0, 3); mp3Stream.Seek(0, SeekOrigin.Begin); string tagS = Encoding.ASCII.GetString(b); if (tagS != "TAG") { return(false); } mp3Stream.Seek(-128 + 3, SeekOrigin.End); //Parse the tag -)------------------------------------------------ tag.AddTitle(Read(mp3Stream, 30)); tag.AddArtist(Read(mp3Stream, 30)); tag.AddAlbum(Read(mp3Stream, 30)); //------------------------------------------------ tag.AddYear(Read(mp3Stream, 4)); tag.AddComment(Read(mp3Stream, 30)); //string trackNumber; mp3Stream.Seek(-2, SeekOrigin.Current); b = new byte[2]; mp3Stream.Read(b, 0, 2); if (b[0] == 0) { tag.AddTrack(b[1].ToString()); } byte genreByte = (byte)mp3Stream.ReadByte(); mp3Stream.Seek(0, SeekOrigin.Begin); tag.AddGenre(TagGenres.Get(genreByte)); return(true); }