Есть ли способ получить универсальный тег mp3 с помощью mp3agic?
Я разрабатываю 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
value в значение тега, что означает, что мне все равно придется это знать. Принимаю любые предложения, даже обмениваюсь mp3agic.
1 ответ
Решение
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;
}