【问题标题】:TagLib-Sharp - Retagging filesTagLib-Sharp - 重新标记文件
【发布时间】:2017-12-08 16:02:24
【问题描述】:

我即将创建一个小工具,它可以重新创建我的 mp3 文件上的所有标签。 因为它们一团糟,我想删除所有标签并使用正确的值重新创建它们。

这样做我遇到了我无法设置标签值的问题。 但问题是,我无法设置标签。我有以下代码:

File tagLibFile = File.Create(filePath);
tagLibFile.RemoveTags(TagLib.TagTypes.AllTags);
tagLibFile.Tag.Album = album;
tagLibFile.Tag.AlbumArtists = artists.ToArray();
tagLibFile.Tag.Track = track;
tagLibFile.Tag.Title = title;
tagLibFile.Tag.TitleSort = titleSort;
...
tagLibFile.Save();

文件被正确读出。然后标签被删除。 但在那之后设置标签不起作用。标签内的字符串仍然为空。 我还没有见过像“tagLibFile.SetTag(Tag t)”这样的方法。 Tag 只能用作 getter,但不能用作 setter。

之后我添加了一些框架,但这并没有设置标签的效果。也许我以错误的方式使用它? 希望你能帮我解决这个问题!

亲切的问候,

体系结构

【问题讨论】:

    标签: c# mp3 taglib-sharp


    【解决方案1】:

    我猜在删除标签后,TagLib#(或 TagLib,就此而言)不会创建新标签来保存信息。但是,当打开一个文件时,它可能会做一些检查,如果文件没有,它会创建一个新标签。

    因此,作为一种解决方法,您可以在删除标签后保存文件一次,然后继续添加新的标签信息。

    File tagLibFile = File.Create(filePath);
    tagLibFile.RemoveTags(TagLib.TagTypes.AllTags);
    // Save the file once, so that Taglib Sharp takes care of creating any necessary tags when opening the file next time and dispose the file reference:
    tagLibFile.Save();
    tagLibFile.Dispose();
    

    您可以在再次打开文件后继续编辑标签:

    tagLibFile = File.Create(filePath);
    tagLibFile.Tag.Album = album;
    tagLibFile.Tag.AlbumArtists = artists.ToArray();
    tagLibFile.Tag.Track = track;
    tagLibFile.Tag.Title = title;
    tagLibFile.Tag.TitleSort = titleSort;
    // ...
    

    记得在编辑完标签后再次保存文件:

    tagLibFile.Save();
    

    我希望这会有所帮助。如果您还有其他问题,或者上面的代码仍然无法正常工作,请随时发表评论。 :)

    【讨论】:

      猜你喜欢
      • 2019-01-27
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多