本文整理汇总了C++中music_info::CMusicInfoTag::SetMusicBrainzAlbumArtistID方法的典型用法代码示例。如果您正苦于以下问题:C++ CMusicInfoTag::SetMusicBrainzAlbumArtistID方法的具体用法?C++ CMusicInfoTag::SetMusicBrainzAlbumArtistID怎么用?C++ CMusicInfoTag::SetMusicBrainzAlbumArtistID使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类music_info::CMusicInfoTag
的用法示例。
在下文中一共展示了CMusicInfoTag::SetMusicBrainzAlbumArtistID方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ParseTag
bool CTagLoaderTagLib::ParseTag(ID3v2::Tag *id3v2, MUSIC_INFO::EmbeddedArt *art, MUSIC_INFO::CMusicInfoTag& tag)
{
if (!id3v2) return false;
ReplayGain replayGainInfo;
ID3v2::AttachedPictureFrame *pictures[3] = {};
const ID3v2::FrameListMap& frameListMap = id3v2->frameListMap();
for (ID3v2::FrameListMap::ConstIterator it = frameListMap.begin(); it != frameListMap.end(); ++it)
{
// It is possible that the taglist is empty. In that case no useable values can be extracted.
// and we should skip the tag.
if (it->second.isEmpty()) continue;
if (it->first == "TPE1") SetArtist(tag, GetID3v2StringList(it->second));
else if (it->first == "TALB") tag.SetAlbum(it->second.front()->toString().to8Bit(true));
else if (it->first == "TPE2") SetAlbumArtist(tag, GetID3v2StringList(it->second));
else if (it->first == "TIT2") tag.SetTitle(it->second.front()->toString().to8Bit(true));
else if (it->first == "TCON") SetGenre(tag, GetID3v2StringList(it->second));
else if (it->first == "TRCK") tag.SetTrackNumber(strtol(it->second.front()->toString().toCString(true), NULL, 10));
else if (it->first == "TPOS") tag.SetDiscNumber(strtol(it->second.front()->toString().toCString(true), NULL, 10));
else if (it->first == "TYER") tag.SetYear(strtol(it->second.front()->toString().toCString(true), NULL, 10));
else if (it->first == "TCMP") tag.SetCompilation((strtol(it->second.front()->toString().toCString(true), NULL, 10) == 0) ? false : true);
else if (it->first == "TENC") {} // EncodedBy
else if (it->first == "TCOP") {} // Copyright message
else if (it->first == "TDRC") tag.SetYear(strtol(it->second.front()->toString().toCString(true), NULL, 10));
else if (it->first == "TDRL") tag.SetYear(strtol(it->second.front()->toString().toCString(true), NULL, 10));
else if (it->first == "TDTG") {} // Tagging time
else if (it->first == "TLAN") {} // Languages
else if (it->first == "TMOO") tag.SetMood(it->second.front()->toString().to8Bit(true));
else if (it->first == "USLT")
// Loop through any lyrics frames. Could there be multiple frames, how to choose?
for (ID3v2::FrameList::ConstIterator lt = it->second.begin(); lt != it->second.end(); ++lt)
{
ID3v2::UnsynchronizedLyricsFrame *lyricsFrame = dynamic_cast<ID3v2::UnsynchronizedLyricsFrame *> (*lt);
if (lyricsFrame)
tag.SetLyrics(lyricsFrame->text().to8Bit(true));
}
else if (it->first == "COMM")
// Loop through and look for the main (no description) comment
for (ID3v2::FrameList::ConstIterator ct = it->second.begin(); ct != it->second.end(); ++ct)
{
ID3v2::CommentsFrame *commentsFrame = dynamic_cast<ID3v2::CommentsFrame *> (*ct);
if (commentsFrame && commentsFrame->description().isEmpty())
tag.SetComment(commentsFrame->text().to8Bit(true));
}
else if (it->first == "TXXX")
// Loop through and process the UserTextIdentificationFrames
for (ID3v2::FrameList::ConstIterator ut = it->second.begin(); ut != it->second.end(); ++ut)
{
ID3v2::UserTextIdentificationFrame *frame = dynamic_cast<ID3v2::UserTextIdentificationFrame *> (*ut);
if (!frame) continue;
// First field is the same as the description
StringList stringList = frame->fieldList();
if (stringList.size() == 1) continue;
stringList.erase(stringList.begin());
String desc = frame->description().upper();
if (desc == "MUSICBRAINZ ARTIST ID")
tag.SetMusicBrainzArtistID(SplitMBID(StringListToVectorString(stringList)));
else if (desc == "MUSICBRAINZ ALBUM ID")
tag.SetMusicBrainzAlbumID(stringList.front().to8Bit(true));
else if (desc == "MUSICBRAINZ ALBUM ARTIST ID")
tag.SetMusicBrainzAlbumArtistID(SplitMBID(StringListToVectorString(stringList)));
else if (desc == "MUSICBRAINZ ALBUM ARTIST")
SetAlbumArtist(tag, StringListToVectorString(stringList));
else if (desc == "REPLAYGAIN_TRACK_GAIN")
replayGainInfo.ParseGain(ReplayGain::TRACK, stringList.front().toCString(true));
else if (desc == "REPLAYGAIN_ALBUM_GAIN")
replayGainInfo.ParseGain(ReplayGain::ALBUM, stringList.front().toCString(true));
else if (desc == "REPLAYGAIN_TRACK_PEAK")
replayGainInfo.ParsePeak(ReplayGain::TRACK, stringList.front().toCString(true));
else if (desc == "REPLAYGAIN_ALBUM_PEAK")
replayGainInfo.ParsePeak(ReplayGain::ALBUM, stringList.front().toCString(true));
else if (desc == "ALBUMARTIST" || desc == "ALBUM ARTIST")
SetAlbumArtist(tag, StringListToVectorString(stringList));
else if (desc == "ARTISTS")
{
if (id3v2->header()->majorVersion() < 4)
tag.SetMusicBrainzArtistHints(StringListToVectorString(TagLib::StringList::split(stringList.front(), TagLib::String("/"))));
else
tag.SetMusicBrainzArtistHints(StringListToVectorString(stringList));
}
else if (desc == "ALBUMARTISTS" || desc == "ALBUM ARTISTS")
{
if (id3v2->header()->majorVersion() < 4)
tag.SetMusicBrainzAlbumArtistHints(StringListToVectorString(TagLib::StringList::split(stringList.front(), TagLib::String("/"))));
else
tag.SetMusicBrainzAlbumArtistHints(StringListToVectorString(stringList));
}
else if (desc == "MOOD")
tag.SetMood(stringList.front().to8Bit(true));
else if (g_advancedSettings.m_logLevel == LOG_LEVEL_MAX)
CLog::Log(LOGDEBUG, "unrecognized user text tag detected: TXXX:%s", frame->description().toCString(true));
}
else if (it->first == "UFID")
// Loop through any UFID frames and set them
for (ID3v2::FrameList::ConstIterator ut = it->second.begin(); ut != it->second.end(); ++ut)
{
ID3v2::UniqueFileIdentifierFrame *ufid = reinterpret_cast<ID3v2::UniqueFileIdentifierFrame*> (*ut);
if (ufid->owner() == "http://musicbrainz.org")
//.........这里部分代码省略.........