Esempio n. 1
0
        private void ReadFramesByHeader(ID3TagObject id3TagObject)
        {
            if (_MajorVersion == 2)
            {
                id3TagObject.Title  = GetFrameDataByHeaderName(TITLE_HEADER_V2, false);
                id3TagObject.Artist = GetFrameDataByHeaderName(ARTIST_HEADER_V2, false);
                id3TagObject.Album  = GetFrameDataByHeaderName(ALBUM_HEADER_V2, false);
                id3TagObject.Year   = GetFrameDataByHeaderName(YEAR_HEADER_V2, false);
                string[] tracks = GetFrameDataByHeaderName(TRACK_HEADER_V2, false).Split('/');
                if (tracks.Length > 0 && !string.IsNullOrEmpty(tracks[0]))
                {
                    id3TagObject.Track = Convert.ToInt32(tracks[0]);
                }
                if (tracks.Length > 1 && !string.IsNullOrEmpty(tracks[1]))
                {
                    id3TagObject.TotalTracks = Convert.ToInt32(tracks[1]);
                }
                //if (!string.IsNullOrEmpty(GetFrameDataByHeaderName(GENRE_HEADER_V2, false)))
                id3TagObject.Genre   = GetFrameDataByHeaderName(GENRE_HEADER_V2, false);
                id3TagObject.Comment = GetFrameDataByHeaderName(COMMENT_HEADER_V2, false);
            }
            else if (_MajorVersion > 2)
            {
                id3TagObject.BeatsPerMinute = GetFrameDataByHeaderName(BPM_HEADER_V34, false);
                id3TagObject.Length         = GetFrameDataByHeaderName(LENGTH_HEADER_V34, false);

                id3TagObject.Artist     = GetFrameDataByHeaderName(ARTIST_HEADER_V34, false);
                id3TagObject.Album      = GetFrameDataByHeaderName(ALBUM_HEADER_V34, false);
                id3TagObject.Comment    = GetFrameDataByHeaderName(COMMENT_HEADER_V34, false);
                id3TagObject.Composer   = GetFrameDataByHeaderName(COMPOSER_HEADER_V34, false);
                id3TagObject.Copyright  = GetFrameDataByHeaderName(COPYRIGHT_HEADER_V34, false);
                id3TagObject.Language   = GetFrameDataByHeaderName(LANGUAGE_HEADER_V34, false);
                id3TagObject.Textwriter = GetFrameDataByHeaderName(TEXTWRITER_HEADER_V34, false);
                id3TagObject.Title      = GetFrameDataByHeaderName(TITLE_HEADER_V34, false);
                id3TagObject.Year       = GetFrameDataByHeaderName(YEAR_HEADER_V34, false);

                string[] tracks = GetFrameDataByHeaderName(TRACK_HEADER_V34, true).Split('/');
                if (tracks.Length > 0 && !string.IsNullOrEmpty(tracks[0]))
                {
                    id3TagObject.Track = Convert.ToInt32(tracks[0]);
                }
                if (tracks.Length > 1 && !string.IsNullOrEmpty(tracks[1]))
                {
                    id3TagObject.TotalTracks = Convert.ToInt32(tracks[1]);
                }
                if (!string.IsNullOrEmpty(GetFrameDataByHeaderName(GENRE_HEADER_V34, false)))
                {
                    id3TagObject.Genre = GetFrameDataByHeaderName(GENRE_HEADER_V34, false);
                }
            }
        }
Esempio n. 2
0
        public ID3TagObject Read(string fileName)
        {
            ID3TagObject ret = null;

            if (!File.Exists(fileName))
            {
                return(ret);
            }

            using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
            {
                //Delcare a buffer to read
                byte[] id3buffer = new byte[128];

                //Read the Last 128 Bytes of the file
                fs.Seek(id3buffer.Length * -1, SeekOrigin.End);
                fs.Read(id3buffer, 0, id3buffer.Length);

                //Read all bytes and convert them to a string
                string id3string = Encoding.ASCII.GetString(id3buffer);
                //Check if the ID3v1 Tag exists
                if (id3string.Substring(_HeaderIndex, _HeaderLength) == "TAG")
                {
                    ret = new ID3TagObject()
                    {
                        Title   = id3string.Substring(_TitleIndex, _TitleLength),
                        Artist  = id3string.Substring(_ArtistIndex, _ArtistLength),
                        Album   = id3string.Substring(_TitleIndex, _TitleLength),
                        Year    = id3string.Substring(_YearIndex, _YearLength),
                        Comment = id3string.Substring(_CommentIndex, _CommentLength),
                        Genre   = id3buffer[_GenreIdIndex].ToString()
                    };
                    if (id3buffer[_ZerobinaryIndex] == 0)
                    {
                        ret.Track = id3buffer[_TrackIndex];
                    }
                }
                else
                {
                    throw new ID3TagCouldntBeenFoundException("The ID3v1 Tag couldn't been found. Please make sure the file has an ID3v1 Tag");
                }
            }
            return(ret);
        }
Esempio n. 3
0
        /// <summary>
        /// Reads in the given file at the filepath and returns an object to get all the ID3 Content.
        /// </summary>
        /// <param name="fileName">Filepath of the file to parse</param>
        /// <returns>Returns an ID3TagObject to work with.</returns>
        public ID3TagObject Read(string fileName)
        {
            ID3TagObject ret = null;

            if (!File.Exists(fileName))
            {
                return(ret);
            }

            using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
            {
                using (BinaryReader binaryReader = new BinaryReader(fs))
                {
                    ret = new ID3TagObject()
                    {
                        ID3v2Parser = this,
                        Type        = ID3Type.ID3v2
                    };
                    ReadHeader(binaryReader);

                    if (_ExtendedHeaderFlag)
                    {
                        ReadExtendedHeader(binaryReader);
                    }

                    ReadFrames(binaryReader);

                    if (_FooterPresentTag)
                    {
                        ReadFooter(binaryReader);
                    }

                    ReadFramesByHeader(ret);
                }
            }
            return(ret);
        }