Изменить названия альбомов с помощью mp3agic

Я хотел перебрать папку, содержащую файлы.mp3 и изменить названия их альбомов (если у них их нет) на их заголовок (например, Remix.mp3 с заголовком "Remix" получает альбом "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());
    }
}

Я получаю следующую ошибку:

Исключение в потоке "main" com.mpatric.mp3agic.NotSupportedException: упаковка устаревших фреймов не поддерживается в com.mpatric.mp3agic.ID3v2ObseleteFrame.packFrame(ID3v2ObseleteFrame.java:32) в com.mpatric.mp2agFra.ra3.java:83) в com.mpatric.mp3agic.AbstractID3v2Tag.packSpecifiedFrames(AbstractID3v2Tag.java:275) в com.mpatric.mp3agic.AbstractID3v2Tag.packFrames(AbstractID3v2Tag.java:261) абстрактная переменная.java:227) на com.mpatric.mp3agic.AbstractID3v2Tag.toBytes(AbstractID3v2Tag.java:218) на com.mpatric.mp3agic.Mp3File.save(Mp3File.java:450) на de.thejetstream.main.Iterator (итератор (..java:57) на de.thejetstream.main.Main.main(Main.java:12)

в этом файле:

название: Чувствую себя хорошо в черном и желтом.mp3

название: Чувствуй себя хорошо в черном и желтом (feat. Gorillaz & De La Soul)

альбом: Black and Yellow - Single

Он падает в строке 57, что соответствует последнему сохранению (в улове).

В чем проблема с этим кодом? Это просто потому, что файл использует старый вид кодека или что-то вроде этого?

1 ответ

Решение

Я нашел решение:

Проблема заключалась в том, что эти файлы использовали теги ip3v2 вместо ip3v1. Просто проверяя, что на нем есть и корректируя код, соответственно все решаемо.

Другие вопросы по тегам