TagLib-Sharp - 重新标记文件

时间:2017-12-08 16:02:24

标签: c# mp3 taglib-sharp

我即将创建一个小工具,它可以重新创建我的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)”这样的方法。标签仅作为吸气剂使用,但不能作为定位器使用。

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

亲切的问候,

SyLuS

1 个答案:

答案 0 :(得分: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();

我希望这会有所帮助。如果您有任何其他问题,或上述代码仍然无效,请随时发表评论。 :)功能