public static GeneralEncapsulatedObjectFrame Get(TagLib.Id3v2.Tag tag, string description, bool create)
 {
     GeneralEncapsulatedObjectFrame frame;
     IEnumerator<Frame> enumerator = tag.GetFrames(FrameType.GEOB).GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             Frame current = enumerator.Current;
             frame = current as GeneralEncapsulatedObjectFrame;
             if ((frame != null) && (frame.Description == description))
             {
                 return frame;
             }
         }
     }
     finally
     {
         if (enumerator == null)
         {
         }
         enumerator.Dispose();
     }
     if (!create)
     {
         return null;
     }
     frame = new GeneralEncapsulatedObjectFrame {
         Description = description
     };
     tag.AddFrame(frame);
     return frame;
 }
 public static RelativeVolumeFrame Get(TagLib.Id3v2.Tag tag, string identification, bool create)
 {
     RelativeVolumeFrame frame;
     IEnumerator<Frame> enumerator = tag.GetFrames(FrameType.RVA2).GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             Frame current = enumerator.Current;
             frame = current as RelativeVolumeFrame;
             if ((frame != null) && (frame.Identification == identification))
             {
                 return frame;
             }
         }
     }
     finally
     {
         if (enumerator == null)
         {
         }
         enumerator.Dispose();
     }
     if (!create)
     {
         return null;
     }
     frame = new RelativeVolumeFrame(identification);
     tag.AddFrame(frame);
     return frame;
 }
 public static UnsynchronisedLyricsFrame Get(TagLib.Id3v2.Tag tag, string description, string language, bool create)
 {
     UnsynchronisedLyricsFrame frame;
     IEnumerator<Frame> enumerator = tag.GetFrames(FrameType.USLT).GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             Frame current = enumerator.Current;
             frame = current as UnsynchronisedLyricsFrame;
             if (((frame != null) && (frame.Description == description)) && ((language == null) || (language == frame.Language)))
             {
                 return frame;
             }
         }
     }
     finally
     {
         if (enumerator == null)
         {
         }
         enumerator.Dispose();
     }
     if (!create)
     {
         return null;
     }
     frame = new UnsynchronisedLyricsFrame(description, language);
     tag.AddFrame(frame);
     return frame;
 }
 public static TermsOfUseFrame GetPreferred(TagLib.Id3v2.Tag tag, string language)
 {
     TermsOfUseFrame frame = null;
     IEnumerator<Frame> enumerator = tag.GetFrames(FrameType.USER).GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             Frame current = enumerator.Current;
             TermsOfUseFrame frame3 = current as TermsOfUseFrame;
             if (frame3 != null)
             {
                 if (frame3.Language == language)
                 {
                     return frame3;
                 }
                 if (frame == null)
                 {
                     frame = frame3;
                 }
             }
         }
     }
     finally
     {
         if (enumerator == null)
         {
         }
         enumerator.Dispose();
     }
     return frame;
 }
 public static AttachedPictureFrame Get(TagLib.Id3v2.Tag tag, string description, PictureType type, bool create)
 {
     AttachedPictureFrame frame;
     IEnumerator<Frame> enumerator = tag.GetFrames(FrameType.APIC).GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             Frame current = enumerator.Current;
             frame = current as AttachedPictureFrame;
             if (((frame != null) && ((description == null) || (frame.Description == description))) && ((type == PictureType.Other) || (frame.Type == type)))
             {
                 return frame;
             }
         }
     }
     finally
     {
         if (enumerator == null)
         {
         }
         enumerator.Dispose();
     }
     if (!create)
     {
         return null;
     }
     frame = new AttachedPictureFrame {
         Description = description,
         Type = type
     };
     tag.AddFrame(frame);
     return frame;
 }
 public static TermsOfUseFrame Get(TagLib.Id3v2.Tag tag, string language, bool create)
 {
     IEnumerator<Frame> enumerator = tag.GetFrames(FrameType.USER).GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             Frame current = enumerator.Current;
             TermsOfUseFrame frame2 = current as TermsOfUseFrame;
             if ((frame2 != null) && ((language == null) || (language == frame2.Language)))
             {
                 return frame2;
             }
         }
     }
     finally
     {
         if (enumerator == null)
         {
         }
         enumerator.Dispose();
     }
     if (!create)
     {
         return null;
     }
     TermsOfUseFrame frame3 = new TermsOfUseFrame(language);
     tag.AddFrame(frame3);
     return frame3;
 }
 public static UniqueFileIdentifierFrame Get(TagLib.Id3v2.Tag tag, string owner, bool create)
 {
     UniqueFileIdentifierFrame frame;
     IEnumerator<Frame> enumerator = tag.GetFrames(FrameType.UFID).GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             Frame current = enumerator.Current;
             frame = current as UniqueFileIdentifierFrame;
             if ((frame != null) && (frame.Owner == owner))
             {
                 return frame;
             }
         }
     }
     finally
     {
         if (enumerator == null)
         {
         }
         enumerator.Dispose();
     }
     if (!create)
     {
         return null;
     }
     frame = new UniqueFileIdentifierFrame(owner, null);
     tag.AddFrame(frame);
     return frame;
 }
示例#8
0
        public static string GetDate(TagLib.Id3v2.Tag tag)
        {
            String date = "";
            var frames = tag.GetFrames<TagLib.Id3v2.TextInformationFrame>("TDRC");
            foreach (TagLib.Id3v2.TextInformationFrame frame in frames)
            {
                foreach (string text in frame.Text)
                    if (text.Length > date.Length)
                        date = text;
            }

            return date;
        }
 public static UserTextInformationFrame Get(TagLib.Id3v2.Tag tag, string description, StringType type, bool create)
 {
     if (tag == null)
     {
         throw new ArgumentNullException("tag");
     }
     if (description == null)
     {
         throw new ArgumentNullException("description");
     }
     if (description.Length == 0)
     {
         throw new ArgumentException("Description must not be empty.", "description");
     }
     IEnumerator<UserTextInformationFrame> enumerator = tag.GetFrames<UserTextInformationFrame>(FrameType.TXXX).GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             UserTextInformationFrame current = enumerator.Current;
             if (description.Equals(current.Description))
             {
                 return current;
             }
         }
     }
     finally
     {
         if (enumerator == null)
         {
         }
         enumerator.Dispose();
     }
     if (!create)
     {
         return null;
     }
     UserTextInformationFrame frame2 = new UserTextInformationFrame(description, type);
     tag.AddFrame(frame2);
     return frame2;
 }
 public static CommentsFrame GetPreferred(TagLib.Id3v2.Tag tag, string description, string language)
 {
     bool flag = (description == null) || !description.StartsWith("iTun");
     int num = -1;
     CommentsFrame frame = null;
     IEnumerator<Frame> enumerator = tag.GetFrames(FrameType.COMM).GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             Frame current = enumerator.Current;
             CommentsFrame frame3 = current as CommentsFrame;
             if ((frame3 != null) && (!flag || !frame3.Description.StartsWith("iTun")))
             {
                 bool flag2 = frame3.Description == description;
                 bool flag3 = frame3.Language == language;
                 if (flag2 && flag3)
                 {
                     return frame3;
                 }
                 int num2 = !flag3 ? (!flag2 ? 0 : 1) : 2;
                 if (num2 > num)
                 {
                     num = num2;
                     frame = frame3;
                 }
             }
         }
     }
     finally
     {
         if (enumerator == null)
         {
         }
         enumerator.Dispose();
     }
     return frame;
 }
 public static UnsynchronisedLyricsFrame GetPreferred(TagLib.Id3v2.Tag tag, string description, string language)
 {
     int num = -1;
     UnsynchronisedLyricsFrame frame = null;
     IEnumerator<Frame> enumerator = tag.GetFrames(FrameType.USLT).GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             Frame current = enumerator.Current;
             UnsynchronisedLyricsFrame frame3 = current as UnsynchronisedLyricsFrame;
             if (frame3 != null)
             {
                 bool flag = frame3.Description == description;
                 bool flag2 = frame3.Language == language;
                 if (flag && flag2)
                 {
                     return frame3;
                 }
                 int num2 = !flag2 ? (!flag ? 0 : 1) : 2;
                 if (num2 > num)
                 {
                     num = num2;
                     frame = frame3;
                 }
             }
         }
     }
     finally
     {
         if (enumerator == null)
         {
         }
         enumerator.Dispose();
     }
     return frame;
 }
 public static TextInformationFrame Get(TagLib.Id3v2.Tag tag, ByteVector ident, StringType encoding, bool create)
 {
     if (tag == null)
     {
         throw new ArgumentNullException("tag");
     }
     if (ident == null)
     {
         throw new ArgumentNullException("ident");
     }
     if (ident.Count != 4)
     {
         throw new ArgumentException("Identifier must be four bytes long.", "ident");
     }
     IEnumerator<TextInformationFrame> enumerator = tag.GetFrames<TextInformationFrame>(ident).GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             return enumerator.Current;
         }
     }
     finally
     {
         if (enumerator == null)
         {
         }
         enumerator.Dispose();
     }
     if (!create)
     {
         return null;
     }
     TextInformationFrame frame = new TextInformationFrame(ident, encoding);
     tag.AddFrame(frame);
     return frame;
 }
示例#13
0
        // Overwrites all POPM frames with the new rating and playcount.
        // If no *known-compatible* frames are found, a new "Banshee"-authored
        // frame is also created to store this information.
        public static void StoreRating(int rating, TagLib.Id3v2.Tag id3v2tag)
        {
            bool howlerPopmFound = false;
            var popmFrames = id3v2tag.GetFrames<TagLib.Id3v2.PopularimeterFrame>();
            foreach (TagLib.Id3v2.PopularimeterFrame popm in popmFrames)
            {
                switch(popm.User)
                {
                    case "Banshee":
                    case "*****@*****.**":
                        // A Howler "0" rating is saved as a Banshee "1" because
                        // Banshee interprets a POPM of 0 as no rating
                        if (rating == 0)
                            popm.Rating = BansheeToPopm(1);
                        else
                        {
                            int bansheeRating = (int)Math.Ceiling((double)rating / 5.0);
                            popm.Rating = BansheeToPopm(bansheeRating);
                        }
                        break;
                    case "Windows Media Player 9 Series":
                    case "no@email":
                        popm.Rating = MediaMonkeyToPopm(rating);
                        break;
                    case "Howler":
                        popm.Rating = HowlerToPopm(rating);
                        howlerPopmFound = true;
                        break;
                    default:
                        System.Console.Out.Write("Unrecognized POPM user {0}", popm.User);
                        break;
                }
            }

            if (!howlerPopmFound)
            {
                // Create a Howler popm frame if it doesn't exist
                TagLib.Id3v2.PopularimeterFrame popm = TagLib.Id3v2.PopularimeterFrame.Get(id3v2tag,
                                                                                            HowlerUsername,
                                                                                            true);
                popm.Rating = HowlerToPopm(rating);
            }
        }
示例#14
0
        public static void StorePlayCount(int playcount, TagLib.Id3v2.Tag id3v2tag)
        {
            bool known_frames_found = false;
            foreach (TagLib.Id3v2.PopularimeterFrame popm in
                        id3v2tag.GetFrames<TagLib.Id3v2.PopularimeterFrame>())
            {
                if (System.Array.IndexOf(POPM_known_creator_list, popm.User) >= 0)
                {
                    // Found a known-good POPM frame, don't need to create a "Banshee" frame.
                    known_frames_found = true;
                }

                popm.PlayCount = (ulong)playcount;
            }

            if (!known_frames_found)
            {
                // No known-good frames found, create a new POPM frame (with creator string "Banshee")
                TagLib.Id3v2.PopularimeterFrame popm = TagLib.Id3v2.PopularimeterFrame.Get(id3v2tag,
                                                                                            HowlerUsername,
                                                                                            true);
                popm.PlayCount = (ulong)playcount;
            }
        }
示例#15
0
 string GetUserTextFrame(TagLib.Id3v2.Tag id3v2, string description)
 {
     return id3v2
         .GetFrames<UserTextInformationFrame>()
         .Where(f => String.Equals(f.Description, description, StringComparison.CurrentCultureIgnoreCase))
         .SelectMany(f => f.Text)
         .FirstOrDefault();
 }
示例#16
0
 string GetTextFrame(TagLib.Id3v2.Tag id3v2, string identifier)
 {
     return id3v2
         .GetFrames<TextInformationFrame>(identifier)
         .SelectMany(f => f.Text)
         .FirstOrDefault();
 }