taglib-sharp中是否有与Label / Publisher等效的字段?

Fra*_*cis 3 .net c# id3 taglib-sharp

我正在尝试使用Taglib-sharp更新标签/发布者字段,但使用对象浏览器在其对象层次结构中的任何位置都看不到它。

我已经搜索了谷歌和文档,看起来这是一个不适合的字段。

在我寻找可以编辑这些字段的替代方法之前(我可以提出任何建议吗?),我想我要最后破解一下,然后在StackOverflow社区中问一个熟悉TagLib-sharp并拥有更深入见解的人吗?

提前致谢,

弗朗西斯

更新:我已经研究了其他库,例如mpg123和UltraID3Lib,但是它们似乎具有相同的局限性。

Joã*_*Liz 5

好吧,丹尼尔·福克斯(Daniel Fuchs)的答案对我没有用。但是,这是一个开始。

在TagLib-sharp代码中添加字段的步骤是:

  1. 下载

  2. 打开File TagLib / Tag.cs并插入以下代码(我将其插入PerformersSort下面的250行)

    public virtual string Publisher
    {
        get { return ""; }
        set { }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 打开文件TagLib / Id3v2 / Tag.cs并插入以下代码(我将其插入PerformersSort下面的第1292行)

    public override string Publisher
    {
        get { return GetTextAsString(FrameType.TPUB); }
        set { SetTextFrame(FrameType.TPUB, value); }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 打开File TagLib / Id3v2 / FrameTypes.cs并插入以下代码(我在TPOS的第71行下面插入了它)

    public static readonly ReadOnlyByteVector TPUB = "TPUB";
    
    Run Code Online (Sandbox Code Playgroud)
  5. 现在出现“啊哈”的事情。打开File TagLib / CombinedTag.cs并插入以下代码(我将其插入PerformersSort下面的第318行)

    public override string Publisher
    {
        get
        {
            foreach (Tag tag in tags)
            {
                if (tag == null)
                    continue;
    
                string value = tag.Publisher;
    
                if (value != null)
                    return value;
            }
    
            return null;
        }
    
        set
        {
            foreach (Tag tag in tags)
                if (tag != null)
                    tag.Publisher = value;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  6. 最后,编译代码。

重要提示:我也无法编译代码。您必须下载SharpZipLib dll(.NET 2.0),并将此dll包含在taglib项目中。另外,我需要安装用Nuget制作的NUnit。最后,我在测试代码中评论了GDK库及其所有错误,因为在生产中将不使用它。