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; }
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; }
// 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); } }
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; } }
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(); }
string GetTextFrame(TagLib.Id3v2.Tag id3v2, string identifier) { return id3v2 .GetFrames<TextInformationFrame>(identifier) .SelectMany(f => f.Text) .FirstOrDefault(); }