string ExtractMBIDFromFile(TagLib::ASF::File *file) { string key = "MusicBrainz/Track Id"; TagLib::ASF::Tag *tag = file->tag(); if (tag && tag->attributeListMap().contains(key)) { return tag->attributeListMap()[key].front().toString().to8Bit(true); } return string(); }
QString extractMBIDFromFile(TagLib::ASF::File *file) { const char *key = "MusicBrainz/Track Id"; TagLib::ASF::Tag *tag = file->tag(); if (tag->attributeListMap().contains(key)) { return QString::fromUtf8(tag->attributeListMap()[key].front().toString().toCString(true)); } return QString(); }
QString TagLibMetadata::getKey() const{ if(f == NULL || !f->isValid()) return ""; TagLib::MPEG::File* fileTestMpeg = dynamic_cast<TagLib::MPEG::File*>(f); if(fileTestMpeg != NULL){ TagLib::ID3v2::Tag* tagTestId3v2 = fileTestMpeg->ID3v2Tag(); if(tagTestId3v2 != NULL){ TagLib::ID3v2::FrameList l = tagTestId3v2->frameListMap()["TKEY"]; if(!l.isEmpty()){ TagLib::String out = l.front()->toString(); return QString::fromUtf8((out.toCString())); } return ""; } TagLib::ID3v1::Tag* tagTestId3v1 = fileTestMpeg->ID3v1Tag(); if(tagTestId3v1 != NULL){ #ifdef Q_OS_WIN qDebug("ID3v1 does not support the Key tag"); #else qDebug("ID3v1 does not support the Key tag (%s)",f->name()); #endif return "N/A"; } } TagLib::RIFF::AIFF::File* fileTestAiff = dynamic_cast<TagLib::RIFF::AIFF::File*>(f); if(fileTestAiff != NULL){ TagLib::ID3v2::Tag* tagTestId3v2 = fileTestAiff->tag(); if(tagTestId3v2 != NULL){ TagLib::ID3v2::FrameList l = tagTestId3v2->frameListMap()["TKEY"]; if(!l.isEmpty()){ TagLib::String out = l.front()->toString(); return QString::fromUtf8((out.toCString())); } return ""; } } TagLib::RIFF::WAV::File* fileTestWav = dynamic_cast<TagLib::RIFF::WAV::File*>(f); if(fileTestWav != NULL){ TagLib::ID3v2::Tag* tagTestId3v2 = fileTestWav->tag(); if(tagTestId3v2 != NULL){ TagLib::ID3v2::FrameList l = tagTestId3v2->frameListMap()["TKEY"]; if(!l.isEmpty()){ TagLib::String out = l.front()->toString(); return QString::fromUtf8((out.toCString())); } return ""; } } TagLib::MP4::Tag* tagTestMp4 = dynamic_cast<TagLib::MP4::Tag*>(f->tag()); if(tagTestMp4 != NULL){ #ifdef Q_OS_WIN qDebug("iTunes metadata does not support the Key tag"); #else qDebug("iTunes metadata does not support the Key tag (%s)",f->name()); #endif return "N/A"; } TagLib::ASF::Tag* tagTestAsf = dynamic_cast<TagLib::ASF::Tag*>(f->tag()); if(tagTestAsf != NULL){ TagLib::ASF::AttributeList l = tagTestAsf->attributeListMap()["WM/InitialKey"]; if(!l.isEmpty()){ TagLib::String out = l.front().toString(); return QString::fromUtf8((out.toCString())); } return ""; } TagLib::APE::Tag* tagTestApe = dynamic_cast<TagLib::APE::Tag*>(f->tag()); if(tagTestApe != NULL){ #ifdef Q_OS_WIN qDebug("APE metadata does not support the Key tag"); #else qDebug("APE metadata does not support the Key tag (%s)",f->name()); #endif return "N/A"; } #ifdef Q_OS_WIN qDebug("Key tag read failed all tests"); #else qDebug("Key tag read failed all tests on %s",f->name()); #endif return "N/A"; }
QString TagLibMetadata::getGrouping() const{ if(f == NULL || !f->isValid()) return ""; TagLib::MPEG::File* fileTestMpeg = dynamic_cast<TagLib::MPEG::File*>(f); if(fileTestMpeg != NULL){ TagLib::ID3v2::Tag* tagTestId3v2 = fileTestMpeg->ID3v2Tag(); if(tagTestId3v2 != NULL){ TagLib::ID3v2::FrameList l = tagTestId3v2->frameListMap()["TIT1"]; if(!l.isEmpty()){ TagLib::String out = l.front()->toString(); return QString::fromUtf8((out.toCString())); } return ""; } TagLib::ID3v1::Tag* tagTestId3v1 = fileTestMpeg->ID3v1Tag(); if(tagTestId3v1 != NULL){ #ifdef Q_OS_WIN qDebug("ID3v1 does not support the Grouping tag"); #else qDebug("ID3v1 does not support the Grouping tag (%s)",f->name()); #endif return "N/A"; } } TagLib::RIFF::AIFF::File* fileTestAiff = dynamic_cast<TagLib::RIFF::AIFF::File*>(f); if(fileTestAiff != NULL){ TagLib::ID3v2::Tag* tagTestId3v2 = fileTestAiff->tag(); if(tagTestId3v2 != NULL){ TagLib::ID3v2::FrameList l = tagTestId3v2->frameListMap()["TIT1"]; if(!l.isEmpty()){ TagLib::String out = l.front()->toString(); return QString::fromUtf8((out.toCString())); } return ""; } } TagLib::RIFF::WAV::File* fileTestWav = dynamic_cast<TagLib::RIFF::WAV::File*>(f); if(fileTestWav != NULL){ TagLib::ID3v2::Tag* tagTestId3v2 = fileTestWav->tag(); if(tagTestId3v2 != NULL){ TagLib::ID3v2::FrameList l = tagTestId3v2->frameListMap()["TIT1"]; if(!l.isEmpty()){ TagLib::String out = l.front()->toString(); return QString::fromUtf8((out.toCString())); } return ""; } } TagLib::MP4::Tag* tagTestMp4 = dynamic_cast<TagLib::MP4::Tag*>(f->tag()); if(tagTestMp4 != NULL){ TagLib::MP4::Item m = tagTestMp4->itemListMap()["\251grp"]; if(m.isValid()){ TagLib::String out = m.toStringList().front(); return QString::fromUtf8((out.toCString())); } return ""; } TagLib::ASF::Tag* tagTestAsf = dynamic_cast<TagLib::ASF::Tag*>(f->tag()); if(tagTestAsf != NULL){ TagLib::ASF::AttributeList l = tagTestAsf->attributeListMap()["WM/ContentGroupDescription"]; if(!l.isEmpty()){ TagLib::String out = l.front().toString(); return QString::fromUtf8((out.toCString())); } return ""; } TagLib::APE::Tag* tagTestApe = dynamic_cast<TagLib::APE::Tag*>(f->tag()); if(tagTestApe != NULL){ TagLib::APE::Item m = tagTestApe->itemListMap()["Grouping"]; if(!m.isEmpty()){ TagLib::String out = m.toStringList().front(); return QString::fromUtf8((out.toCString())); } return ""; } #ifdef Q_OS_WIN qDebug("Grouping tag read failed all tests"); #else qDebug("Grouping tag read failed all tests on %s",f->name()); #endif return "N/A"; }