From: Lukáš Lalinský <lalinsky@gmail.com> Date: Wed, 16 Mar 2011 21:54:58 +0000 (+0100) Subject: Convert TDRC to TYER+TDAT+TIME X-Git-Tag: v1.8beta~130^2~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d3df66f196fe3580de6d1a78f779d4a4309a65b0;p=taglib Convert TDRC to TYER+TDAT+TIME --- diff --git a/taglib/mpeg/id3v2/id3v2tag.cpp b/taglib/mpeg/id3v2/id3v2tag.cpp index 6908c1b0..7286d3c1 100644 --- a/taglib/mpeg/id3v2/id3v2tag.cpp +++ b/taglib/mpeg/id3v2/id3v2tag.cpp @@ -383,6 +383,18 @@ void ID3v2::Tag::downgradeFrames(FrameList *frames, FrameList *newFrames) const frameTYER->setText(content.substr(0, 4)); frames->append(frameTYER); newFrames->append(frameTYER); + if(content.size() >= 10 && content[4] == '-' && content[7] == '-') { + ID3v2::TextIdentificationFrame *frameTDAT = new ID3v2::TextIdentificationFrame("TDAT", String::Latin1); + frameTDAT->setText(content.substr(8, 2) + content.substr(5, 2)); + frames->append(frameTDAT); + newFrames->append(frameTDAT); + if(content.size() >= 16 && content[10] == 'T' && content[13] == ':') { + ID3v2::TextIdentificationFrame *frameTIME = new ID3v2::TextIdentificationFrame("TIME", String::Latin1); + frameTIME->setText(content.substr(11, 2) + content.substr(14, 2)); + frames->append(frameTIME); + newFrames->append(frameTIME); + } + } } } // FIXME migrate TIPL and TMCL to IPLS diff --git a/tests/test_id3v2.cpp b/tests/test_id3v2.cpp index 84074585..d3adc632 100644 --- a/tests/test_id3v2.cpp +++ b/tests/test_id3v2.cpp @@ -486,7 +486,7 @@ public: tf->setText("2011-03-16"); foo.ID3v2Tag()->addFrame(tf); tf = new ID3v2::TextIdentificationFrame("TDRC", String::Latin1); - tf->setText("2012-04-17"); + tf->setText("2012-04-17T12:01"); foo.ID3v2Tag()->addFrame(tf); foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TDRL", String::Latin1)); foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TDTG", String::Latin1));