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(); }
internal ID3v2USLTFrame(ID3v2Frame frame) : base(frame) { if (frame.ID != "USLT") { throw new FormatException(string.Format("Cannot typecast frame {0} to {1}!", frame.ID, "USLT")); } }
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*")); } }
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*")); } }
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(); }
/// <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)); }
// 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); }
/// <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"); } }
/// <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); }
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)); }
/// <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"); } }
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; }