本文整理汇总了C++中taglib::mpeg::File::ID3v1Tag方法的典型用法代码示例。如果您正苦于以下问题:C++ File::ID3v1Tag方法的具体用法?C++ File::ID3v1Tag怎么用?C++ File::ID3v1Tag使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类taglib::mpeg::File
的用法示例。
在下文中一共展示了File::ID3v1Tag方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: strip
void
MetaBundle::readTags( TagLib::AudioProperties::ReadStyle readStyle )
{
if( m_url.protocol() != "file" )
return;
const QString path = m_url.path();
TagLib::FileRef fileref;
TagLib::Tag *tag = 0;
if( AmarokConfig::recodeID3v1Tags() && path.endsWith( ".mp3", false ) )
{
TagLib::MPEG::File *mpeg = new TagLib::MPEG::File( QFile::encodeName( path ), true, readStyle );
fileref = TagLib::FileRef( mpeg );
if( mpeg->isValid() )
// we prefer ID3v1 over ID3v2 if recoding tags because
// apparently this is what people who ignore ID3 standards want
tag = mpeg->ID3v1Tag() ? (TagLib::Tag*)mpeg->ID3v1Tag() : (TagLib::Tag*)mpeg->ID3v2Tag();
}
else {
fileref = TagLib::FileRef( QFile::encodeName( path ), true, readStyle );
if( !fileref.isNull() )
tag = fileref.tag();
}
if( !fileref.isNull() ) {
if ( tag ) {
#define strip( x ) TStringToQString( x ).stripWhiteSpace()
m_title = strip( tag->title() );
m_artist = strip( tag->artist() );
m_album = strip( tag->album() );
m_comment = strip( tag->comment() );
m_genre = strip( tag->genre() );
m_year = tag->year() ? QString::number( tag->year() ) : QString();
m_track = tag->track() ? QString::number( tag->track() ) : QString();
#undef strip
m_isValidMedia = true;
}
init( fileref.audioProperties() );
}
//FIXME disabled for beta4 as it's simpler to not got 100 bug reports
//else if( KMimeType::findByUrl( m_url )->is( "audio" ) )
// init( KFileMetaInfo( m_url, QString::null, KFileMetaInfo::Everything ) );
}
示例2: Load
//.........这里部分代码省略.........
TagLib::Ogg::Vorbis::File* oggVorbisFile = NULL;
TagLib::Ogg::FLAC::File* oggFlacFile = NULL;
TagLib::S3M::File* s3mFile = NULL;
TagLib::TrueAudio::File* ttaFile = NULL;
TagLib::WavPack::File* wvFile = NULL;
TagLib::XM::File* xmFile = NULL;
TagLib::RIFF::WAV::File * wavFile = NULL;
TagLib::RIFF::AIFF::File * aiffFile = NULL;
if (strExtension == "ape")
file = apeFile = new APE::File(stream);
else if (strExtension == "asf" || strExtension == "wmv" || strExtension == "wma")
file = asfFile = new ASF::File(stream);
else if (strExtension == "flac")
file = flacFile = new FLAC::File(stream, ID3v2::FrameFactory::instance());
else if (strExtension == "it")
file = itFile = new IT::File(stream);
else if (strExtension == "mod" || strExtension == "module" || strExtension == "nst" || strExtension == "wow")
file = modFile = new Mod::File(stream);
else if (strExtension == "mp4" || strExtension == "m4a" ||
strExtension == "m4r" || strExtension == "m4b" ||
strExtension == "m4p" || strExtension == "3g2")
file = mp4File = new MP4::File(stream);
else if (strExtension == "mpc")
file = mpcFile = new MPC::File(stream);
else if (strExtension == "mp3" || strExtension == "aac")
file = mpegFile = new MPEG::File(stream, ID3v2::FrameFactory::instance());
else if (strExtension == "s3m")
file = s3mFile = new S3M::File(stream);
else if (strExtension == "tta")
file = ttaFile = new TrueAudio::File(stream, ID3v2::FrameFactory::instance());
else if (strExtension == "wv")
file = wvFile = new WavPack::File(stream);
else if (strExtension == "aif" || strExtension == "aiff")
file = aiffFile = new RIFF::AIFF::File(stream);
else if (strExtension == "wav")
file = wavFile = new RIFF::WAV::File(stream);
else if (strExtension == "xm")
file = xmFile = new XM::File(stream);
else if (strExtension == "ogg")
file = oggVorbisFile = new Ogg::Vorbis::File(stream);
else if (strExtension == "oga") // Leave this madness until last - oga container can have Vorbis or FLAC
{
file = oggFlacFile = new Ogg::FLAC::File(stream);
if (!file || !file->isValid())
{
delete file;
oggFlacFile = NULL;
file = oggVorbisFile = new Ogg::Vorbis::File(stream);
}
}
if (!file || !file->isOpen())
{
delete file;
delete stream;
CLog::Log(LOGDEBUG, "file could not be opened for tag reading");
return false;
}
APE::Tag *ape = NULL;
ASF::Tag *asf = NULL;
MP4::Tag *mp4 = NULL;
ID3v1::Tag *id3v1 = NULL;
ID3v2::Tag *id3v2 = NULL;
Ogg::XiphComment *xiph = NULL;
Tag *generic = NULL;
if (apeFile)
ape = apeFile->APETag(false);
else if (asfFile)
asf = asfFile->tag();
else if (flacFile)
{
xiph = flacFile->xiphComment(false);
id3v2 = flacFile->ID3v2Tag(false);
}
else if (mp4File)
mp4 = mp4File->tag();
else if (mpegFile)
{
id3v1 = mpegFile->ID3v1Tag(false);
id3v2 = mpegFile->ID3v2Tag(false);
ape = mpegFile->APETag(false);
}
else if (oggFlacFile)
xiph = dynamic_cast<Ogg::XiphComment *>(oggFlacFile->tag());
else if (oggVorbisFile)
xiph = dynamic_cast<Ogg::XiphComment *>(oggVorbisFile->tag());
else if (ttaFile)
id3v2 = ttaFile->ID3v2Tag(false);
else if (aiffFile)
id3v2 = aiffFile->tag();
else if (wavFile)
#if TAGLIB_MAJOR_VERSION > 1 || TAGLIB_MINOR_VERSION > 8
id3v2 = wavFile->ID3v2Tag();
#else
id3v2 = wavFile->tag();
#endif
else if (wvFile)
示例3: OpenFile
/*!
* \copydoc MetaIO::read()
*/
Metadata *MetaIOID3::read(QString filename)
{
TagLib::MPEG::File *mpegfile = OpenFile(filename);
if (!mpegfile)
return NULL;
TagLib::ID3v2::Tag *tag = mpegfile->ID3v2Tag();
if (!tag)
{
delete mpegfile;
return NULL;
}
// if there is no ID3v2 tag, try to read the ID3v1 tag and copy it to the ID3v2 tag structure
if (tag->isEmpty())
{
TagLib::ID3v1::Tag *tag_v1 = mpegfile->ID3v1Tag();
if (!tag_v1)
{
delete mpegfile;
return NULL;
}
if (!tag_v1->isEmpty())
{
tag->setTitle(tag_v1->title());
tag->setArtist(tag_v1->artist());
tag->setAlbum(tag_v1->album());
tag->setTrack(tag_v1->track());
tag->setYear(tag_v1->year());
tag->setGenre(tag_v1->genre());
}
}
Metadata *metadata = new Metadata(filename);
ReadGenericMetadata(tag, metadata);
bool compilation = false;
// Compilation Artist (TPE4 Remix) or fallback to (TPE2 Band)
// N.B. The existance of a either frame is NOT an indication that this
// is a compilation, but if it is then one of them will probably hold
// the compilation artist.
TextIdentificationFrame *tpeframe = NULL;
TagLib::ID3v2::FrameList tpelist = tag->frameListMap()["TPE4"];
if (tpelist.isEmpty() || tpelist.front()->toString().isEmpty())
tpelist = tag->frameListMap()["TPE2"];
if (!tpelist.isEmpty())
tpeframe = (TextIdentificationFrame *)tpelist.front();
if (tpeframe && !tpeframe->toString().isEmpty())
{
QString compilation_artist = TStringToQString(tpeframe->toString())
.trimmed();
metadata->setCompilationArtist(compilation_artist);
}
// MythTV rating and playcount, stored in POPM frame
PopularimeterFrame *popm = findPOPM(tag, email);
if (!popm)
{
if (!tag->frameListMap()["POPM"].isEmpty())
popm = dynamic_cast<PopularimeterFrame *>
(tag->frameListMap()["POPM"].front());
}
if (popm)
{
int rating = popm->rating();
rating = static_cast<int>(((static_cast<float>(rating)/255.0)
* 10.0) + 0.5);
metadata->setRating(rating);
metadata->setPlaycount(popm->counter());
}
// Look for MusicBrainz Album+Artist ID in TXXX Frame
UserTextIdentificationFrame *musicbrainz = find(tag,
"MusicBrainz Album Artist Id");
if (musicbrainz)
{
// If the MusicBrainz ID is the special "Various Artists" ID
// then compilation is TRUE
if (!compilation && !musicbrainz->fieldList().isEmpty())
compilation = (MYTH_MUSICBRAINZ_ALBUMARTIST_UUID
== TStringToQString(musicbrainz->fieldList().front()));
}
// TLEN - Ignored intentionally, some encoders write bad values
// e.g. Lame under certain circumstances will always write a length of
// 27 hours
//.........这里部分代码省略.........
示例4: Open
bool mttFile::Open( QString filename )
{
bool changed = false;
fname = filename;
fileref = new TagLib::FileRef( QFile::encodeName( filename ).constData() );
if ( filename.endsWith( QString( ".mp3" ), Qt::CaseInsensitive ) ) {
ismpeg = true;
TagLib::MPEG::File *f = dynamic_cast<TagLib::MPEG::File *>(fileref->file());
if ( f ) {
if ( f->ID3v1Tag() ) {
if ( !(f->ID3v2Tag()) ) {
qDebug("ID3v1 found");
// Copy id3v1 tag to id3v2 tag
TagLib::ID3v1::Tag *v1tag = f->ID3v1Tag();
TagLib::ID3v2::Tag *v2tag = f->ID3v2Tag( true );
v2tag->setAlbum( v1tag->album() );
v2tag->setArtist( v1tag->artist() );
v2tag->setComment( v1tag->comment() );
v2tag->setGenre( v1tag->genre() );
v2tag->setTitle( v1tag->title() );
v2tag->setTrack( v1tag->track() );
v2tag->setYear( v1tag->year() );
changed = true;
}
else if ( f->ID3v2Tag() && f->ID3v1Tag() ) {
qDebug("ID3v1 & v2 found");
// Fill gaps of ID3v2Tag from ID3v1Tag
TagLib::ID3v1::Tag *v1tag = f->ID3v1Tag();
TagLib::ID3v2::Tag *v2tag = f->ID3v2Tag();
if ( v2tag->album().isEmpty() ) {
v2tag->setAlbum( v1tag->album() );
changed = true;
}
if ( v2tag->artist().isEmpty() ) {
v2tag->setArtist( v1tag->artist() );
changed = true;
}
if ( v2tag->comment().isEmpty() ) {
v2tag->setComment( v1tag->comment() );
changed = true;
}
if ( v2tag->genre().isEmpty() ) {
v2tag->setGenre( v1tag->genre() );
changed = true;
}
if ( v2tag->title().isEmpty() ) {
v2tag->setTitle( v1tag->title() );
changed = true;
}
if ( v2tag->track() == 0 ) {
v2tag->setTrack( v1tag->track() );
changed = true;
}
if ( v2tag->year() == 0 ) {
v2tag->setYear( v1tag->year() );
changed = true;
}
}
}
}
}
else if ( filename.endsWith( QString( ".ogg" ), Qt::CaseInsensitive ) ) {
isogg = true;
}
else if ( filename.endsWith( QString( ".flac" ), Qt::CaseInsensitive ) ) {
isflac = true;
}
delete fileref;
fileref = NULL;
return changed;
}
示例5: Load
//.........这里部分代码省略.........
else if (strExtension == "mp3" || strExtension == "aac")
file = mpegFile = new MPEG::File(stream, ID3v2::FrameFactory::instance());
else if (strExtension == "s3m")
file = s3mFile = new S3M::File(stream);
else if (strExtension == "tta")
file = ttaFile = new TrueAudio::File(stream, ID3v2::FrameFactory::instance());
else if (strExtension == "wv")
file = wvFile = new WavPack::File(stream);
else if (strExtension == "xm")
file = xmFile = new XM::File(stream);
else if (strExtension == "ogg")
file = oggVorbisFile = new Ogg::Vorbis::File(stream);
else if (strExtension == "oga") // Leave this madness until last - oga container can have Vorbis or FLAC
{
file = oggFlacFile = new Ogg::FLAC::File(stream);
if (!file || !file->isValid())
{
delete file;
oggFlacFile = NULL;
file = oggVorbisFile = new Ogg::Vorbis::File(stream);
}
}
if (!file || !file->isOpen())
{
delete file;
delete stream;
CLog::Log(LOGDEBUG, "file could not be opened for tag reading");
return false;
}
APE::Tag *ape = NULL;
ASF::Tag *asf = NULL;
MP4::Tag *mp4 = NULL;
ID3v1::Tag *id3v1 = NULL;
ID3v2::Tag *id3v2 = NULL;
Ogg::XiphComment *xiph = NULL;
Tag *generic = NULL;
if (apeFile)
ape = apeFile->APETag(false);
else if (asfFile)
asf = asfFile->tag();
else if (flacFile)
{
xiph = flacFile->xiphComment(false);
id3v2 = flacFile->ID3v2Tag(false);
}
else if (mp4File)
mp4 = mp4File->tag();
else if (mpegFile)
{
id3v1 = mpegFile->ID3v1Tag(false);
id3v2 = mpegFile->ID3v2Tag(false);
ape = mpegFile->APETag(false);
}
else if (oggFlacFile)
xiph = dynamic_cast<Ogg::XiphComment *>(oggFlacFile->tag());
else if (oggVorbisFile)
xiph = dynamic_cast<Ogg::XiphComment *>(oggVorbisFile->tag());
else if (ttaFile)
id3v2 = ttaFile->ID3v2Tag(false);
else if (wvFile)
ape = wvFile->APETag(false);
else if (mpcFile)
ape = mpcFile->APETag(false);
else // This is a catch all to get generic information for other files types (s3m, xm, it, mod, etc)
generic = file->tag();
if (file->audioProperties())
tag.SetDuration(file->audioProperties()->length());
if (asf)
ParseASF(asf, art, tag);
if (id3v1)
ParseID3v1Tag(id3v1, art, tag);
if (id3v2)
ParseID3v2Tag(id3v2, art, tag);
if (generic)
ParseGenericTag(generic, art, tag);
if (mp4)
ParseMP4Tag(mp4, art, tag);
if (xiph) // xiph tags override id3v2 tags in badly tagged FLACs
ParseXiphComment(xiph, art, tag);
if (ape && (!id3v2 || g_advancedSettings.m_prioritiseAPEv2tags)) // ape tags override id3v2 if we're prioritising them
ParseAPETag(ape, art, tag);
// art for flac files is outside the tag
if (flacFile)
SetFlacArt(flacFile, art, tag);
if (!tag.GetTitle().empty() || !tag.GetArtist().empty() || !tag.GetAlbum().empty())
tag.SetLoaded();
tag.SetURL(strFileName);
delete file;
delete stream;
return true;
}
示例6: malloc
/* LOAD UP THE FILE'S TAG
* Search each file type individually so we can get individual tags for
* custom tagging.
*/
TagDatac * tag_data_load (char *url, int *pvalid)
{
TagData * data;
TagLib::String s = url;
int mtime;
struct stat buf;
if (!stat (url, &buf))
mtime = (int) buf.st_mtime;
/* FIXME: Using filename to find media type. GStreamer probe instead?
*/
if(s.size() > 4) {
if(s.substr(s.size() - 4, 4).upper() == ".OGG")
{
TagLib::Vorbis::File * f = new TagLib::Vorbis::File(url);
if (! f->isValid ())
return NULL;
data = (TagData*) malloc (sizeof (TagData));
data->file = new TagLib::FileRef (f);
data->id3v2 = NULL;
data->id3v1 = NULL;
data->ape = NULL;
data->xiph = f->tag ();
data->mime = "application/ogg";
data->mtime = mtime;
return reinterpret_cast<TagDatac *> (data);
}
if(s.substr(s.size() - 4, 4).upper() == ".MP3")
{
TagLib::MPEG::File * f = new TagLib::MPEG::File(url);
if (! f->isValid ())
return NULL;
data = (TagData*) malloc (sizeof (TagData));
data->file = new TagLib::FileRef (f);
data->id3v2 = f->ID3v2Tag ();
data->id3v1 = f->ID3v1Tag ();
data->ape = f->APETag ();
data->xiph = NULL;
data->mime = "audio/mpeg";
data->mtime = mtime;
return reinterpret_cast<TagDatac *>(data);
}
if(s.substr(s.size() - 5, 5).upper() == ".FLAC")
{
TagLib::FLAC::File * f = new TagLib::FLAC::File(url);
if ((! f->isValid ())&& (pvalid != NULL)){
*pvalid = -1;//paul add on 080827 merge from Olive
return NULL;
}
data = (TagData*) malloc (sizeof (TagData));
data->file = new TagLib::FileRef (f);
data->id3v2 = f->ID3v2Tag ();
data->id3v1 = f->ID3v1Tag ();
data->ape = NULL;
data->xiph = f->xiphComment ();
data->mime = "audio/x-flac";
data->mtime = mtime;
return reinterpret_cast<TagDatac *>(data);
}
if(s.substr(s.size() - 4, 4).upper() == ".MPC" || s.substr(s.size() - 4, 4).upper() == ".AAC")
{
TagLib::MPC::File * f = new TagLib::MPC::File(url);
if (! f->isValid ())
return NULL;
data = (TagData*) malloc (sizeof (TagData));
data->file = new TagLib::FileRef (f);
data->id3v2 = NULL;
data->id3v1 = f->ID3v1Tag ();
data->ape = f->APETag ();
data->xiph = NULL;
data->mime = "audio/x-musepack";
data->mtime = mtime;
return reinterpret_cast<TagDatac *>(data);
}
}
return NULL;
}
示例7: setKey
int TagLibMetadata::setKey(const QString& key){
if(f == NULL || !f->isValid()){
qDebug("Cannot set grouping tag on invalid file object");
return 1;
}
TagLib::MPEG::File* fileTestMpeg = dynamic_cast<TagLib::MPEG::File*>(f);
if(fileTestMpeg != NULL){
TagLib::ID3v2::Tag* tagTestId3v2 = fileTestMpeg->ID3v2Tag();
if(tagTestId3v2 != NULL){
TagLib::ID3v2::Frame* frm = new TagLib::ID3v2::TextIdentificationFrame("TKEY");
frm->setText(TagLib::String(key.toUtf8().data()));
tagTestId3v2->removeFrames("TKEY");
tagTestId3v2->addFrame(frm);
f->save();
return 0;
}else{
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 1;
}
}
}
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::Frame* frm = new TagLib::ID3v2::TextIdentificationFrame("TKEY");
frm->setText(TagLib::String(key.toUtf8().data()));
tagTestId3v2->removeFrames("TKEY");
tagTestId3v2->addFrame(frm);
f->save();
return 0;
}
}
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::Frame* frm = new TagLib::ID3v2::TextIdentificationFrame("TKEY");
frm->setText(TagLib::String(key.toUtf8().data()));
tagTestId3v2->removeFrames("TKEY");
tagTestId3v2->addFrame(frm);
f->save();
return 0;
}
}
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 1;
}
TagLib::ASF::Tag* tagTestAsf = dynamic_cast<TagLib::ASF::Tag*>(f->tag());
if(tagTestAsf != NULL){
tagTestAsf->setAttribute("WM/InitialKey",TagLib::String(key.toUtf8().data()));
f->save();
return 0;
}
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 1;
}
#ifdef Q_OS_WIN
qDebug("Key tag write failed all tests");
#else
qDebug("Key tag write failed all tests on %s",f->name());
#endif
return 1;
}
示例8: setGrouping
int TagLibMetadata::setGrouping(const QString& grp){
if(f == NULL || !f->isValid()){
qDebug("Cannot set grouping tag on invalid file object");
return 1;
}
TagLib::MPEG::File* fileTestMpeg = dynamic_cast<TagLib::MPEG::File*>(f);
if(fileTestMpeg != NULL){
TagLib::ID3v2::Tag* tagTestId3v2 = fileTestMpeg->ID3v2Tag();
if(tagTestId3v2 != NULL){
TagLib::ID3v2::Frame* frm = new TagLib::ID3v2::TextIdentificationFrame("TIT1");
frm->setText(TagLib::String(grp.toUtf8().data()));
tagTestId3v2->removeFrames("TIT1");
tagTestId3v2->addFrame(frm);
f->save();
return 0;
}else{
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 1;
}
}
}
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::Frame* frm = new TagLib::ID3v2::TextIdentificationFrame("TIT1");
frm->setText(TagLib::String(grp.toUtf8().data()));
tagTestId3v2->removeFrames("TIT1");
tagTestId3v2->addFrame(frm);
f->save();
return 0;
}
}
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::Frame* frm = new TagLib::ID3v2::TextIdentificationFrame("TIT1");
frm->setText(TagLib::String(grp.toUtf8().data()));
tagTestId3v2->removeFrames("TIT1");
tagTestId3v2->addFrame(frm);
f->save();
return 0;
}
}
TagLib::MP4::Tag* tagTestMp4 = dynamic_cast<TagLib::MP4::Tag*>(f->tag());
if(tagTestMp4 != NULL){
TagLib::StringList sl(TagLib::String(grp.toUtf8().data()));
tagTestMp4->itemListMap()["\251grp"] = sl;
tagTestMp4->save();
f->save();
return 0;
}
TagLib::ASF::Tag* tagTestAsf = dynamic_cast<TagLib::ASF::Tag*>(f->tag());
if(tagTestAsf != NULL){
tagTestAsf->setAttribute("WM/ContentGroupDescription",TagLib::String(grp.toUtf8().data()));
f->save();
return 0;
}
TagLib::APE::Tag* tagTestApe = dynamic_cast<TagLib::APE::Tag*>(f->tag());
if(tagTestApe != NULL){
tagTestApe->addValue("GROUPING",TagLib::String(grp.toUtf8().data()));
f->save();
return 0;
}
#ifdef Q_OS_WIN
qDebug("Grouping tag write failed all tests");
#else
qDebug("Grouping tag write failed all tests on %s",f->name());
#endif
return 1;
}
示例9: getKey
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";
}
示例10: getGrouping
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";
}