Как изменить поле «Исполнитель альбома» файла MP3 с библиотекой TagLib?
Есть ли что-то похожее на:
f.tag()->setArtist("blabla");
?
ID3v2 на самом деле не поддерживает поле под названием «художник альбома». iTunes использует фрейм TPE2, который должен быть:
TPE2
Кадр «Band / Orchestra / Accompaniment» используется для получения дополнительной информации об исполнителях в записи.
Полный список кадров см. http://id3.org/id3v2.3.0#Declared_ID3v2_frames.
Чтобы написать это с TagLib, это бы сработало:
#include <mpegfile.h>
#include <id3v2tag.h>
#include <textidentificationframe.h>
int main()
{
TagLib::MPEG::File file("foo.mp3");
TagLib::ByteVector handle = "TPE2";
TagLib::String value = "bar";
TagLib::ID3v2::Tag *tag = file.ID3v2Tag(true);
if(!tag->frameList(handle).isEmpty())
{
tag->frameList(handle).front()->setText(value);
}
else
{
TagLib::ID3v2::TextIdentificationFrame *frame =
new TagLib::ID3v2::TextIdentificationFrame(handle, TagLib::String::UTF8);
tag->addFrame(frame);
frame->setText(value);
}
file.save();
return 0;
}
Если вы просто хотите удалить кадры, вы можете просто сделать:
TagLib::MPEG::File file("foo.mp3");
TagLib::ID3v2::Tag *tag = file.ID3v2Tag();
if(tag)
{
tag->removeFrames("TPE2");
file.save();
}
Других решений пока нет …