<div dir="ltr"><div>I see... I did not realize I need to cast ID3v2::Frames to TextIdentificationFrames in order to accept StringLists.<br><br>
<div class="gmail_quote">On Sat, Oct 5, 2013 at 8:00 AM,  <span dir="ltr"><<a href="mailto:taglib-devel-request@kde.org" target="_blank">taglib-devel-request@kde.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Send taglib-devel mailing list submissions to<br>
        <a href="mailto:taglib-devel@kde.org" target="_blank">taglib-devel@kde.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://mail.kde.org/mailman/listinfo/taglib-devel" target="_blank">https://mail.kde.org/mailman/listinfo/taglib-devel</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:taglib-devel-request@kde.org" target="_blank">taglib-devel-request@kde.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:taglib-devel-owner@kde.org" target="_blank">taglib-devel-owner@kde.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of taglib-devel digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1. How to write multiple values to one ID3v2.4 frame? (Duke Yin)<br>
   2. Re: How to write multiple values to one ID3v2.4 frame?<br>
      (Michael Helmling)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Fri, 4 Oct 2013 22:07:41 -0400<br>
From: Duke Yin <<a href="mailto:yindesu@gmail.com" target="_blank">yindesu@gmail.com</a>><br>
To: <a href="mailto:taglib-devel@kde.org" target="_blank">taglib-devel@kde.org</a><br>
Subject: How to write multiple values to one ID3v2.4 frame?<br>
Message-ID:<br>
        <CADzCEdet9DK2u7dXWivxhMAVnQxCXSTxBcQC1KpA0x7AFWrt=<a href="mailto:g@mail.gmail.com" target="_blank">g@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="iso-8859-1"<br>
<br>
I'm trying to figure out how to write multiple values to an ID3v2.4 tag.<br>
 ID3v2.4 spec is to have a single frame where all values are joined<br>
together with a null character.  (By contrast, ID3v2.3 uses a backslash<br>
instead of null.  XiphComment uses multiple frames instead of a single<br>
frame with a delimiting character.)  I couldn't find any code examples for<br>
ID3v2.4, so I tried two approaches which failed.<br>
<br>
Approach 1:  add a new frame for each value<br>
> // for each string {<br>
> TagLib::ID3v2::TextIdentificationFrame *frame = new<br>
TagLib::ID3v2::TextIdentificationFrame(keyStr, TagLib::String::UTF8);<br>
> id3v2->addFrame(frame);<br>
> frame->setText(str);<br>
> // } close for loop<br>
Result 1:  incorrect - multiple frames instead of a single frame.<br>
<br>
Approach 2:  manually separate the values with the null character<br>
> TagLib::StringList values;<br>
> // { for each string, append the string to "values" }<br>
> TagLib::ID3v2::TextIdentificationFrame *frame = new<br>
TagLib::ID3v2::TextIdentificationFrame(keyStr, TagLib::String::UTF8);<br>
> id3v2->addFrame(frame);<br>
> frame->setText(values.toString('\0'));<br>
<br>
Result 2: wrong and inconsistent behaviors:<br>
- All values can be read by foobar2000<br>
- The last value can't be read by Mp3tag, apparently because the text<br>
encoding size is double what Mp3tag would write with the same input<br>
- All values except the first can't be read by TagLib when the file is<br>
opened again with code similar to <a href="https://gist.github.com/Horrendus/622816" target="_blank">https://gist.github.com/Horrendus/622816</a> .<br>
<br>
I'm not sure if I'm using the null character correctly in Approach 2 given<br>
how many apps it breaks (although foobar2000 handles it).   I'm hoping<br>
there's an easy way to write multiple values to ID3v2.4 that I missed.<br>
 What is the correct way to do this?<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://mail.kde.org/pipermail/taglib-devel/attachments/20131004/84040af0/attachment-0001.html" target="_blank">http://mail.kde.org/pipermail/taglib-devel/attachments/20131004/84040af0/attachment-0001.html</a>><br>


<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Sat, 05 Oct 2013 11:19:12 +0200<br>
From: Michael Helmling <<a href="mailto:michaelhelmling@posteo.de" target="_blank">michaelhelmling@posteo.de</a>><br>
To: <a href="mailto:taglib-devel@kde.org" target="_blank">taglib-devel@kde.org</a><br>
Subject: Re: How to write multiple values to one ID3v2.4 frame?<br>
Message-ID: <<a href="mailto:524FD990.8040701@posteo.de" target="_blank">524FD990.8040701@posteo.de</a>><br>
Content-Type: text/plain; charset="iso-8859-1"<br>
<br>
Hi,<br>
<br>
Simply use<br>
frame->setText(values)<br>
which is also declared with a StringList argument.<br>
<br>
Regards,<br>
Michael<br>
Am 05.10.2013 04:07, schrieb Duke Yin:<br>
> I'm trying to figure out how to write multiple values to an ID3v2.4<br>
> tag.  ID3v2.4 spec is to have a single frame where all values are<br>
> joined together with a null character.  (By contrast, ID3v2.3 uses a<br>
> backslash instead of null.  XiphComment uses multiple frames instead<br>
> of a single frame with a delimiting character.)  I couldn't find any<br>
> code examples for ID3v2.4, so I tried two approaches which failed.<br>
><br>
> Approach 1:  add a new frame for each value<br>
> > // for each string {<br>
> > TagLib::ID3v2::TextIdentificationFrame *frame = new<br>
> TagLib::ID3v2::TextIdentificationFrame(keyStr, TagLib::String::UTF8);<br>
> > id3v2->addFrame(frame);<br>
> > frame->setText(str);<br>
> > // } close for loop<br>
> Result 1:  incorrect - multiple frames instead of a single frame.<br>
><br>
> Approach 2:  manually separate the values with the null character<br>
> > TagLib::StringList values;<br>
> > // { for each string, append the string to "values" }<br>
> > TagLib::ID3v2::TextIdentificationFrame *frame = new<br>
> TagLib::ID3v2::TextIdentificationFrame(keyStr, TagLib::String::UTF8);<br>
> > id3v2->addFrame(frame);<br>
> > frame->setText(values.toString('\0'));<br>
><br>
> Result 2: wrong and inconsistent behaviors:<br>
> - All values can be read by foobar2000<br>
> - The last value can't be read by Mp3tag, apparently because the text<br>
> encoding size is double what Mp3tag would write with the same input<br>
> - All values except the first can't be read by TagLib when the file is<br>
> opened again with code similar to<br>
> <a href="https://gist.github.com/Horrendus/622816" target="_blank">https://gist.github.com/Horrendus/622816</a> .<br>
><br>
> I'm not sure if I'm using the null character correctly in Approach 2<br>
> given how many apps it breaks (although foobar2000 handles it).   I'm<br>
> hoping there's an easy way to write multiple values to ID3v2.4 that I<br>
> missed.  What is the correct way to do this?<br>
><br>
><br>
> _______________________________________________<br>
> taglib-devel mailing list<br>
> <a href="mailto:taglib-devel@kde.org" target="_blank">taglib-devel@kde.org</a><br>
> <a href="https://mail.kde.org/mailman/listinfo/taglib-devel" target="_blank">https://mail.kde.org/mailman/listinfo/taglib-devel</a><br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://mail.kde.org/pipermail/taglib-devel/attachments/20131005/dd6bc714/attachment-0001.html" target="_blank">http://mail.kde.org/pipermail/taglib-devel/attachments/20131005/dd6bc714/attachment-0001.html</a>><br>


-------------- next part --------------<br>
A non-text attachment was scrubbed...<br>
Name: signature.asc<br>
Type: application/pgp-signature<br>
Size: 555 bytes<br>
Desc: OpenPGP digital signature<br>
URL: <<a href="http://mail.kde.org/pipermail/taglib-devel/attachments/20131005/dd6bc714/attachment-0001.sig" target="_blank">http://mail.kde.org/pipermail/taglib-devel/attachments/20131005/dd6bc714/attachment-0001.sig</a>><br>


<br>
------------------------------<br>
<br>
_______________________________________________<br>
taglib-devel mailing list<br>
<a href="mailto:taglib-devel@kde.org" target="_blank">taglib-devel@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/taglib-devel" target="_blank">https://mail.kde.org/mailman/listinfo/taglib-devel</a><br>
<br>
<br>
End of taglib-devel Digest, Vol 112, Issue 1<br>
********************************************<br>
</blockquote></div><br></div></div>