TagLib-Sharp - 重新标记文件
TagLib-Sharp - Retagging files
我即将创建一个小工具,它可以重新创建我的 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)"这样的方法。标签仅可用作 getter,而不是 setter。
之后添加了一些Frames,但是没有设置标签的效果。也许我以错误的方式使用它?
希望你能帮我解决这个问题!
亲切的问候,
SyLuS
我猜想在删除标签后,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();
希望对您有所帮助。如果您有任何其他问题,或者上面的代码仍然无法正常工作,请随时发表评论。 :)
我即将创建一个小工具,它可以重新创建我的 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)"这样的方法。标签仅可用作 getter,而不是 setter。
之后添加了一些Frames,但是没有设置标签的效果。也许我以错误的方式使用它? 希望你能帮我解决这个问题!
亲切的问候,
SyLuS
我猜想在删除标签后,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();
希望对您有所帮助。如果您有任何其他问题,或者上面的代码仍然无法正常工作,请随时发表评论。 :)