Я добавляю фрейм, который не существует для некоторых моих mp3. Например, отсутствует рейтинг «POPM». Проблема заключается в том, что когда я добавляю фрейм, я не могу установить значение рейтинга. У меня есть два save(), которые я использовал по одному, чтобы посмотреть, работает ли один из них. Но если я повторно запустил эту функцию, и isPOPMExist теперь действителен, я могу установить рейтинг. Так что я не уверен, что шаг отсутствует после того, как я установил POPM когда isPOPMExist терпит неудачуTaglib добавляет тег, который не существует
bool isPOPMExist = id3v2Tag->frameListMap().contains("POPM");
if(!isPOPMExist)
{
TagLib::ByteVector bytePOPM("POPM");
TagLib::ID3v2::TextIdentificationFrame *frame = new TagLib::ID3v2::TextIdentificationFrame(bytePOPM, TagLib::String::UTF8);
id3v2Tag->addFrame(frame);
// frame->setText("");
file.save();
dynamic_cast<TagLib::ID3v2::PopularimeterFrame *>(file.ID3v2Tag()->frameList("POPM").front())->setRating(255);
file.save();
}
else
{
auto framelistCount = file.ID3v2Tag()->frameList("POPM").size();
if(framelistCount > 0)
{
if(dynamic_cast<TagLib::ID3v2::PopularimeterFrame *>(file.ID3v2Tag()->frameList("POPM").front()) != 0)
{
int ratingVal = (int)rating;
dynamic_cast<TagLib::ID3v2::PopularimeterFrame *>(file.ID3v2Tag()->frameList("POPM").front())->setRating((int)rating);
return file.save();
}
}
}