Пример #1
0
        public void UltraID3Test()
        {
            UltraID3 ultraID3 = new UltraID3();

            ultraID3.Read(@"e:\Music\Antenne Bayern Radio\Mirror Dawn.mp3");
            testContextInstance.WriteLine(ultraID3.Artist);
            testContextInstance.WriteLine(ultraID3.Genre);

            //ultraID3.Genre = "Rock";
            //ultraID3.Write();

            MPEGFrameInfo mpegFrameInfo = ultraID3.FirstMPEGFrameInfo;

            if (ultraID3.ID3v1Tag.ExistsInFile)
            {
            }
            ID3v2Tag           id3v2Tag = ultraID3.ID3v2Tag;
            ID3FrameCollection frames   = id3v2Tag.Frames;

            for (int i = 0; i < frames.Count; i++)
            {
                ID3v2Frame frame = frames[i];
            }

            id3v2Tag.Genre = "Chillout";
            ultraID3.Write();
        }
Пример #2
0
 internal ID3v2USLTFrame(ID3v2Frame frame)
     : base(frame)
 {
     if (frame.ID != "USLT")
     {
         throw new FormatException(string.Format("Cannot typecast frame {0} to {1}!", frame.ID, "USLT"));
     }
 }
Пример #3
0
 internal ID3v2UFIDFrame(ID3v2Frame frame)
     : base(frame)
 {
     if (frame.ID[0] != 'U')
     {
         throw new FormatException(string.Format("Cannot typecast frame {0} to {1}!", frame.ID, "U*"));
     }
 }
Пример #4
0
 internal ID3v2WebFrame(ID3v2Frame frame)
     : base(frame)
 {
     if ((frame.ID[0] != 'W') || (frame.ID == "WXXX"))
     {
         throw new FormatException(string.Format("Cannot typecast frame {0} to {1}!", frame.ID, "W*"));
     }
 }
Пример #5
0
        internal ID3v2TextFrame(ID3v2Frame frame)
            : base(frame)
        {
            if ((frame.ID[0] != 'T') || (frame.ID == "TXXX"))
            {
                throw new FormatException(string.Format("Cannot typecast frame {0} to {1}!", frame.ID, "T*"));
            }

            ParseData();
        }
Пример #6
0
        /// <summary>Initializes a new instance of the <see cref="ID3v2TXXXFrame"/> class.</summary>
        /// <param name="frame">The frame.</param>
        /// <exception cref="FormatException"></exception>
        internal ID3v2TXXXFrame(ID3v2Frame frame)
            : base(frame)
        {
            if (frame.ID != "TXXX")
            {
                throw new FormatException(string.Format("Cannot typecast frame {0} to {1}!", frame.ID, "TXXX"));
            }

            ParseData();
        }
        protected FrameValidationException(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
            if (info == null)
            {
                throw new ArgumentNullException("info");
            }

            invalidFrame = (ID3v2Frame)info.GetValue("invalidFrame", typeof(ID3v2Frame));
        }
Пример #8
0
 // 05/17/2007 by aldente
 #region *指定した名前のフレームを取得(FindFrame)
 /// <summary>
 /// 指定した識別子を持つフレームを取得します.
 /// 見つからなければnullを返します.
 /// ※同名のフレームが複数ある場合はどうなるの?
 /// </summary>
 /// <param name="name">フレームの識別子.</param>
 /// <returns>該当するフレームオブジェクト.</returns>
 protected ID3v2Frame FindFrame(string name)
 {
     for (int i = 0; i < frames.Count; i++)
     {
         ID3v2Frame frame = (ID3v2Frame)frames[i];
         if (frame.Name == name)
         {
             return(frame);
         }
     }
     return(null);
 }
Пример #9
0
 /// <summary>
 /// Removes a frame from the composite.
 /// </summary>
 /// <param name="frame">The frame to be removed.</param>
 public virtual void RemoveFrame(ID3v2Frame frame)
 {
     if (frames.Contains(frame))
     {
         frames.Remove(frame);
     }
     else
     {
         throw new FrameCompositeException("Composite does not contain " +
                                           "frame to be removed");
     }
 }
Пример #10
0
        /// <summary>
        /// Returns a new frame of the given type.
        /// </summary>
        /// <param name="frameType">The type of frame to return.</param>
        /// <returns>A new frame of the given type.</returns>
        internal static ID3v2Frame GetNewFrame(FrameType frameType)
        {
            if (!prototypeRegistry.ContainsKey(frameType))
            {
                throw new FrameTypeNotRegisteredException(frameType);
            }

            ID3v2Frame prototypeFrame = prototypeRegistry[frameType];
            ID3v2Frame newFrame       = prototypeFrame.Copy();

            newFrame.Type = frameType;

            return(newFrame);
        }
Пример #11
0
        private void ReadFrames(BinaryReader binaryReader)
        {
            ID3v2Frame frame;

            do
            {
                frame = ID3v2Frame.ReadFrame(binaryReader, _MajorVersion);
                if (frame.Padding)
                {
                    binaryReader.BaseStream.Position = Convert.ToInt64(_HeaderSize);
                    break;
                }
                _Frames.Add(frame);
                _FrameHashes.Add(frame.Name, frame);
            } while (binaryReader.BaseStream.Position <= Convert.ToInt64(_HeaderSize));
        }
Пример #12
0
        /// <summary>
        /// Adds a frame to the composite.
        /// </summary>
        /// <param name="newFrame">The frame to be added.</param>
        public virtual void AddFrame(ID3v2Frame newFrame)
        {
            if (newFrame == null)
            {
                throw new ArgumentNullException("newFrame");
            }

            if (newFrame.Type == this.Type)
            {
                frames.Add(newFrame);
            }
            else
            {
                throw new FrameCompositeException("FrameType of frame to be " +
                                                  "added does not match FrameType of composite");
            }
        }
Пример #13
0
        public void DemoAdvancedUsage()
        {
            // ID3v2 Track Number frames allow you to specify not only the track number,
            // but the total number of tracks as well. Use a TRCKFrame to get to this
            // functionality. (The frame classes are named after their ID3v2.4 frame IDs,
            // e.g. TRCK for Track Number and PRIV for Private Use.)
            ID3v2Tag tag = new ID3v2Tag();

            // This somewhat awkward method for creating frames does have some benefits
            // in other areas.
            TRCKFrame trackNumberFrame = (TRCKFrame)ID3v2Frame.GetNewFrame(FrameType.TrackNumber);

            // Add the track number data.
            trackNumberFrame.TrackNumber = 1;
            trackNumberFrame.TotalTracks = 10;

            // Add the frame to the tag.
            tag.AddFrame(trackNumberFrame);

            // Most of the usual frames are simple implemented as TextInformationFrame's.
            TextInformationFrame artistFrame = (TextInformationFrame)ID3v2Frame.GetNewFrame(FrameType.LeadArtist);

            artistFrame.Text = "My Artist";
            tag.AddFrame(artistFrame);

            // Now that the artist frame is there, the Artist property will work
            Console.WriteLine("Artist: " + tag.Artist);
            // but the others still don't.
            if (tag.HasAlbum)
            {
                Console.WriteLine("Hmmmm....something didn't go right here.");
            }
            else
            {
                Console.WriteLine("Album (still null): " + tag.Album);
            }
            // While we're on the topic of the properties, TrackNumber works, but only returns
            // the track number, not the total tracks (can't fit both into one int, of course)
            Console.WriteLine("Track Number: " + tag.TrackNumber);

            // Use a Private frame (PRIVFrame) to hold some private data
            PRIVFrame privateFrame = (PRIVFrame)ID3v2Frame.GetNewFrame(FrameType.Private);

            privateFrame.OwnerIdentifier = "ID3Sharp demo";
            privateFrame.PrivateData     = new byte[] { 0x49, 0x44, 0x33, 0x53, 0x68, 0x61, 0x72, 0x70 };
            tag.AddFrame(privateFrame);

            // Write the tag out to a file
            tag.WriteTag("advanced.tag", ID3Versions.V2_3);
            // and read it back.
            tag = ID3v2Tag.ReadTag("advanced.tag");

            // Verify the contents
            privateFrame = (PRIVFrame)tag[FrameType.Private];
            Console.Write("Private Data: ");
            foreach (byte dataByte in privateFrame.PrivateData)
            {
                Console.Write(dataByte);
                Console.Write(" (" + (char)dataByte + ") ");
            }
            Console.WriteLine();

            // Remove the frames, with a few (for demonstration) different methods
            tag.RemoveFrame(privateFrame);
            tag.RemoveFrame(FrameType.LeadArtist);
            tag[FrameType.TrackNumber] = null;

            tag.WriteTag("empty.tag", ID3Versions.V2_3);

            // Questions? Problems? Suggestions? Post to a forum on the project site
            // or send me an email.
        }
 public FrameValidationException(string message, ID3v2Frame invalidFrame, Exception inner)
     : base(message, inner)
 {
     this.invalidFrame = invalidFrame;
 }
 public FrameValidationException(ID3v2Frame invalidFrame)
 {
     this.invalidFrame = invalidFrame;
 }