From dea93e5f8da5b15a8f64abdc3bc4cd96bc537128 Mon Sep 17 00:00:00 2001 From: 42Geese <0E5EB1FB2C894978ADAD6308@gmail.com> Date: Sun, 9 Apr 2023 21:15:13 -0400 Subject: [PATCH] Audio Id3v2 Add Support For EncodedBy --- .../TaggingFormats/Id3V2Test.cs | 29 +++++++++++++++++++ src/TaglibSharp/Id3v2/FrameTypes.cs | 1 + src/TaglibSharp/Id3v2/Tag.cs | 14 +++++++++ 3 files changed, 44 insertions(+) diff --git a/src/TaglibSharp.Tests/TaggingFormats/Id3V2Test.cs b/src/TaglibSharp.Tests/TaggingFormats/Id3V2Test.cs index 8b2ea676..d3394761 100644 --- a/src/TaglibSharp.Tests/TaggingFormats/Id3V2Test.cs +++ b/src/TaglibSharp.Tests/TaggingFormats/Id3V2Test.cs @@ -968,6 +968,35 @@ public void TestPublisher () } } + + [Test] + public void TestEncodedBy () + { + Tag tag = new Tag (); + for (byte version = 2; version <= 4; version++) { + tag.Version = version; + + TagTestWithSave (ref tag, delegate (Tag t, string m) { + Assert.IsTrue (t.IsEmpty, "Initial (IsEmpty): " + m); + Assert.IsNull (t.EncodedBy, "Initial (Null): " + m); + }); + + tag.EncodedBy = val_sing; + + TagTestWithSave (ref tag, delegate (Tag t, string m) { + Assert.IsFalse (t.IsEmpty, "Value Set (!IsEmpty): " + m); + Assert.AreEqual (val_sing, t.EncodedBy, "Value Set (!Null): " + m); + }); + + tag.EncodedBy = string.Empty; + + TagTestWithSave (ref tag, delegate (Tag t, string m) { + Assert.IsTrue (t.IsEmpty, "Value Cleared (IsEmpty): " + m); + Assert.IsNull (t.EncodedBy, "Value Cleared (Null): " + m); + }); + } + } + [Test] public void TestISRC () { diff --git a/src/TaglibSharp/Id3v2/FrameTypes.cs b/src/TaglibSharp/Id3v2/FrameTypes.cs index 2fda85de..36b86c07 100644 --- a/src/TaglibSharp/Id3v2/FrameTypes.cs +++ b/src/TaglibSharp/Id3v2/FrameTypes.cs @@ -101,5 +101,6 @@ static class FrameType public static readonly ReadOnlyByteVector WPUB = "WPUB"; public static readonly ReadOnlyByteVector WXXX = "WXXX"; public static readonly ReadOnlyByteVector ETCO = "ETCO"; + public static readonly ReadOnlyByteVector TENC = "TENC"; // Encoded By Frame. } } diff --git a/src/TaglibSharp/Id3v2/Tag.cs b/src/TaglibSharp/Id3v2/Tag.cs index 1c3676ff..d38a9ae5 100644 --- a/src/TaglibSharp/Id3v2/Tag.cs +++ b/src/TaglibSharp/Id3v2/Tag.cs @@ -2265,6 +2265,20 @@ public override string Publisher { set { SetTextFrame (FrameType.TPUB, value); } } + /// + /// Gets and sets the TENC (Encoded by) of the song. + /// + /// + /// A object containing the TENC of the song. + /// + /// + /// This property is implemented using the "TENC" field. + /// + public string EncodedBy { + get { return GetTextAsString (FrameType.TENC); } + set { SetTextFrame (FrameType.TENC, value); } + } + /// /// Gets and sets the ISRC (International Standard Recording Code) of the song. ///