Deleting ID3v2 Frames

Festus Hagen festushagenlists at yahoo.com
Wed Nov 30 07:22:40 UTC 2016


Thanks swave,

Your comment has pointed out the fact my example does not accurately portray my code.
I do add the desired frames to delete to a list then work from that list ... The following is a more accurate representation.

MPEG::File audioFile(fileName);
ID3v2::Tag *id3v2tag = audioFile.ID3v2Tag();
ID3v2::FrameList deleteList;

ID3v2::FrameList::ConstIterator it = id3v2tag->frameList().begin();
for(; it != id3v2tag->frameList().end(); ++it)
  deleteList.append((*it));

ID3v2::FrameList::ConstIterator it = deleteList.begin();
for(; it != deleteList.end();	++it)
  id3v2tag->removeFrame((*it), true);

audioFile.save(MPEG::File::ID3v2, false, 3);

Sorry for the confusion.

-Enjoy
fh : )_~


----- Original Message -----
From: swave <swaverec at gmx.net>
To: Festus Hagen <festushagenlists at yahoo.com>; taglib-devel at kde.org
Sent: Wednesday, November 30, 2016 12:48 AM
Subject: Re: Deleting ID3v2 Frames

On 30.11.2016 05:35, Festus Hagen wrote:

> Hi all,
>
> Just noticed something, don't remember this being the case and would like confirmation.
>
> The inability to delete certain frames.
>
> Maybe I'm doing something wrong?
> The basics of the code is ...
>
> MPEG::File audioFile(fileName);
> ID3v2::Tag *id3v2tag = audioFile.ID3v2Tag();
> ID3v2::FrameList::ConstIterator it = id3v2tag->frameList().begin();
> for(; it != id3v2tag->frameList().end(); ++it)
>
>     id3v2tag->removeFrame((*it), true);
> audioFile.save(MPEG::File::ID3v2, false, 3);

While walking through the list you modify the list.
What happens if you walk the list backwards? Or do
a id3.delall(frame)?

bye   swave


More information about the taglib-devel mailing list