使用 mp3agic 更改专辑名称
Change album names using mp3agic
我想遍历一个包含 .mp3 文件的文件夹,并将它们的专辑名称(如果它们没有)更改为它们的标题(例如,标题为 "Remix" 的 Remix.mp3 获取专辑 "Remix") 使用 mp3agic.
到目前为止,这是我的代码:
if (mp3file.hasId3v1Tag()) {
ID3v1 id3v1Tag = mp3file.getId3v1Tag();
try {
if (id3v1Tag.getAlbum().equals("")) {
id3v1Tag.setAlbum(id3v1Tag.getTitle());
mp3file.save(SAVE_DIR + "\" + child.getName());
System.out.println(SAVE_DIR + "/" + child.getName());
} else {
mp3file.save(SAVE_DIR + "/" + child.getName());
}
} catch (Exception e) {
mp3file.save(SAVE_DIR + "/" + child.getName());
}
}
我收到以下错误:
Exception in thread "main" com.mpatric.mp3agic.NotSupportedException: Packing Obselete frames is not supported
at com.mpatric.mp3agic.ID3v2ObseleteFrame.packFrame(ID3v2ObseleteFrame.java:32)
at com.mpatric.mp3agic.ID3v2Frame.toBytes(ID3v2Frame.java:83)
at com.mpatric.mp3agic.AbstractID3v2Tag.packSpecifiedFrames(AbstractID3v2Tag.java:275)
at com.mpatric.mp3agic.AbstractID3v2Tag.packFrames(AbstractID3v2Tag.java:261)
at com.mpatric.mp3agic.AbstractID3v2Tag.packTag(AbstractID3v2Tag.java:227)
at com.mpatric.mp3agic.AbstractID3v2Tag.toBytes(AbstractID3v2Tag.java:218)
at com.mpatric.mp3agic.Mp3File.save(Mp3File.java:450)
at de.thejetstream.main.Iterator.(Iterator.java:57)
at de.thejetstream.main.Main.main(Main.java:12)
在此文件中:
name: Feel Good in Black and Yellow.mp3
title: Feel Good in Black and Yellow (feat. Gorillaz & De La Soul)
album: Black and Yellow - Single
它在第 57 行崩溃,这等于最后一次保存(在 catch 中)。
这段代码有什么问题?仅仅是因为该文件使用了一种旧的编解码器或类似的东西吗?
我找到了解决方案:
问题是这些文件使用了 ip3v2 标签而不是 ip3v1。只需检查上面的内容并相应地调整代码即可解决所有问题。
我想遍历一个包含 .mp3 文件的文件夹,并将它们的专辑名称(如果它们没有)更改为它们的标题(例如,标题为 "Remix" 的 Remix.mp3 获取专辑 "Remix") 使用 mp3agic.
到目前为止,这是我的代码:
if (mp3file.hasId3v1Tag()) {
ID3v1 id3v1Tag = mp3file.getId3v1Tag();
try {
if (id3v1Tag.getAlbum().equals("")) {
id3v1Tag.setAlbum(id3v1Tag.getTitle());
mp3file.save(SAVE_DIR + "\" + child.getName());
System.out.println(SAVE_DIR + "/" + child.getName());
} else {
mp3file.save(SAVE_DIR + "/" + child.getName());
}
} catch (Exception e) {
mp3file.save(SAVE_DIR + "/" + child.getName());
}
}
我收到以下错误:
Exception in thread "main" com.mpatric.mp3agic.NotSupportedException: Packing Obselete frames is not supported at com.mpatric.mp3agic.ID3v2ObseleteFrame.packFrame(ID3v2ObseleteFrame.java:32) at com.mpatric.mp3agic.ID3v2Frame.toBytes(ID3v2Frame.java:83) at com.mpatric.mp3agic.AbstractID3v2Tag.packSpecifiedFrames(AbstractID3v2Tag.java:275) at com.mpatric.mp3agic.AbstractID3v2Tag.packFrames(AbstractID3v2Tag.java:261) at com.mpatric.mp3agic.AbstractID3v2Tag.packTag(AbstractID3v2Tag.java:227) at com.mpatric.mp3agic.AbstractID3v2Tag.toBytes(AbstractID3v2Tag.java:218) at com.mpatric.mp3agic.Mp3File.save(Mp3File.java:450) at de.thejetstream.main.Iterator.(Iterator.java:57) at de.thejetstream.main.Main.main(Main.java:12)
在此文件中:
name: Feel Good in Black and Yellow.mp3
title: Feel Good in Black and Yellow (feat. Gorillaz & De La Soul)
album: Black and Yellow - Single
它在第 57 行崩溃,这等于最后一次保存(在 catch 中)。
这段代码有什么问题?仅仅是因为该文件使用了一种旧的编解码器或类似的东西吗?
我找到了解决方案:
问题是这些文件使用了 ip3v2 标签而不是 ip3v1。只需检查上面的内容并相应地调整代码即可解决所有问题。