Ticket #3511: mythmusic_compilation.2.diff
File mythmusic_compilation.2.diff, 2.5 KB (added by , 17 years ago) |
---|
-
metaiotaglib.h
12 12 using TagLib::MPEG::File; 13 13 using TagLib::Tag; 14 14 using TagLib::ID3v2::UserTextIdentificationFrame; 15 using TagLib::ID3v2::TextIdentificationFrame; 15 16 using TagLib::ID3v2::AttachedPictureFrame; 16 17 using TagLib::String; 17 18 using TagLib::MPEG::Properties; -
metaiotaglib.cpp
43 43 if (!mdata->Artist().isEmpty()) 44 44 tag->setArtist(QStringToTString(mdata->Artist())); 45 45 46 // MusicBrainz ID 47 UserTextIdentificationFrame *musicbrainz = NULL; 48 musicbrainz = find(taglib->ID3v2Tag(), "MusicBrainz Album Artist Id"); 49 50 // Compilation Artist (TPE4) 51 TextIdentificationFrame *tpeframe = NULL; 52 TagLib::ID3v2::FrameList tpelist = taglib->ID3v2Tag()->frameListMap()["TPE4"]; 53 if (!tpelist.isEmpty()) 54 tpeframe = (TextIdentificationFrame *)tpelist.front(); 55 46 56 if (mdata->Compilation()) 47 57 { 48 58 49 UserTextIdentificationFrame *musicbrainz = 50 new UserTextIdentificationFrame(TagLib::String::UTF8); 51 taglib->ID3v2Tag()->addFrame(musicbrainz); 52 musicbrainz->setDescription("MusicBrainz Album Artist Id"); 59 if (!musicbrainz) 60 { 61 musicbrainz = new UserTextIdentificationFrame(TagLib::String::UTF8); 62 taglib->ID3v2Tag()->addFrame(musicbrainz); 63 musicbrainz->setDescription("MusicBrainz Album Artist Id"); 64 } 65 53 66 musicbrainz->setText(MYTH_MUSICBRAINZ_ALBUMARTIST_UUID); 54 67 55 68 if (!mdata->CompilationArtist().isEmpty()) 56 69 { 57 // Compilation Artist (TPE4) 58 taglib->ID3v2Tag()->frameListMap()["TPE4"].front()->setText( 59 QStringToTString(mdata->CompilationArtist())); 70 if (!tpeframe) { 71 tpeframe = new TextIdentificationFrame(TagLib::ByteVector("TPE4"), TagLib::String::UTF8); 72 taglib->ID3v2Tag()->addFrame(tpeframe); 73 } 74 75 tpeframe->setText(QStringToTString(mdata->CompilationArtist())); 60 76 } 61 77 } 78 else 79 { 80 if (tpeframe) 81 taglib->ID3v2Tag()->removeFrame(tpeframe); 82 if (musicbrainz) 83 taglib->ID3v2Tag()->removeFrame(musicbrainz); 84 } 62 85 63 86 if (!mdata->Title().isEmpty()) 64 87 tag->setTitle(QStringToTString(mdata->Title()));