Есть ли способ получить общий тег mp3 с помощью mp3agic? - PullRequest
0 голосов
/ 06 ноября 2019

Я разрабатываю MP3-плеер с Java, используя mp3agic для редактирования метаданных файлов .mp3. Проблема в том, что я не знаю конкретных тегов файлов для редактирования нужных данных.

Вот мой код для получения трека mp3, например:

public static int get_rep(Music msc)
{
    try
    {
        Mp3File file = new Mp3File(msc.get_path());

        if (file.hasId3v1Tag()) 
        {
            ID3v1 tag = file.getId3v1Tag();
            return Integer.parseInt(tag.getTrack());
        }
        else if (file.hasId3v2Tag()) 
        {
            ID3v2 tag = file.getId3v2Tag();
            return Integer.parseInt(tag.getTrack());
        }
    }
    catch (UnsupportedTagException e) 
    {
        e.printStackTrace();
    } 
    catch (InvalidDataException e) 
    {
        e.printStackTrace();
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }
    return -1;  
}

Есть ли способ получить значение тега, пропуская file.hasId3v1Tag() и file.hasId3v2Tag() проверки?

Я пытался:

private static Object get_tag(Music msc)
{
    try
    {
        Mp3File file = new Mp3File(msc.get_path());

        if (file.hasId3v1Tag()) 
        {
            return file.getId3v1Tag();
        }
        else if (file.hasId3v2Tag()) 
        {
            return file.getId3v2Tag();
        }
        /*
        else if(file.hasCustomTag()) 
        {
            file.removeCustomTag();
            return file.getCustomTag();
        }
        */
    }
    catch (UnsupportedTagException e) 
    {
        e.printStackTrace();
    } 
    catch (InvalidDataException e) 
    {
        e.printStackTrace();
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }
    return Boolean.FALSE;
} 

Но мне все еще нужно проверить теги, а затем привести значение Object к значению тега, что означает, что мне все равно придется это знать. Я принимаю любые предложения, даже обмениваю mp3agic.

1 Ответ

0 голосов
/ 06 ноября 2019

ID3v2 расширяет ID3v1, поэтому вы сможете использовать ID3v1 tag = file.getId3v2Tag(); и извлекать из него данные ID3v1.

Вы можете попробовать это:

private static ID3v1 get_tag(Music msc) {
    try {
        Mp3File file = new Mp3File(msc.get_path());

        if (file.hasId3v1Tag()) {
            return file.getId3v1Tag();
        } else if (file.hasId3v2Tag()) {
            return file.getId3v2Tag();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...