bool KMpcPlugin::writeInfo(const KFileMetaInfo& info) const { TagLib::File *file; if (!TagLib::File::isWritable(QFile::encodeName(info.path()).data())) { kDebug(7034) << "can't write to " << info.path(); return false; } file = new TagLib::MPC::File(QFile::encodeName(info.path()).data(), false); if(!file->isOpen()) { kDebug(7034) << "couldn't open " << info.path(); delete file; return false; } Translator t(info); file->tag()->setTitle(t["Title"]); file->tag()->setArtist(t["Artist"]); file->tag()->setAlbum(t["Album"]); file->tag()->setYear(t.toInt("Date")); file->tag()->setComment(t["Comment"]); file->tag()->setTrack(t.toInt("Tracknumber")); file->tag()->setGenre(t["Genre"]); file->save(); delete file; return true; }
bool KFlacPlugin::writeInfo(const KFileMetaInfo& info) const { TagLib::File *file; if (!TagLib::File::isWritable(QFile::encodeName(info.path()).data())) { kdDebug(7034) << "can't write to " << info.path() << endl; return false; } if (info.mimeType() == "audio/x-flac") file = new TagLib::FLAC::File(QFile::encodeName(info.path()).data(), false); #ifdef TAGLIB_1_2 else file = new TagLib::Ogg::FLAC::File(QFile::encodeName(info.path()).data(), false); #endif if(!file->isOpen()) { kdDebug(7034) << "couldn't open " << info.path() << endl; delete file; return false; } Translator t(info); file->tag()->setTitle(t["Title"]); file->tag()->setArtist(t["Artist"]); file->tag()->setAlbum(t["Album"]); file->tag()->setYear(t.toInt("Date")); file->tag()->setComment(t["Comment"]); file->tag()->setTrack(t.toInt("Tracknumber")); file->tag()->setGenre(t["Genre"]); file->save(); delete file; return true; }
bool AudioTagger::save () { TagLib::File* file = NULL; if (m_file.endsWith(".mp3", Qt::CaseInsensitive)) { file = new TagLib::MPEG::File(m_file.toUtf8().constData()); //process special ID3 fields, APEv2 fiels, etc //If the mp3 has no ID3v2 tag, we create a new one and add the TBPM and TKEY frame addID3v2Tag( ((TagLib::MPEG::File*) file)->ID3v2Tag(true) ); //If the mp3 has an APE tag, we update addAPETag( ((TagLib::MPEG::File*) file)->APETag(false) ); } if (m_file.endsWith(".m4a", Qt::CaseInsensitive)) { file = new TagLib::MP4::File(m_file.toUtf8().constData()); //process special ID3 fields, APEv2 fiels, etc processMP4Tag(((TagLib::MP4::File*) file)->tag()); } if (m_file.endsWith(".ogg", Qt::CaseInsensitive)) { file = new TagLib::Ogg::Vorbis::File(m_file.toUtf8().constData()); //process special ID3 fields, APEv2 fiels, etc addXiphComment( ((TagLib::Ogg::Vorbis::File*) file)->tag() ); } if (m_file.endsWith(".wav", Qt::CaseInsensitive)) { file = new TagLib::RIFF::WAV::File(m_file.toUtf8().constData()); //If the flac has no ID3v2 tag, we create a new one and add the TBPM and TKEY frame addID3v2Tag( ((TagLib::RIFF::WAV::File*) file)->tag() ); } if (m_file.endsWith(".flac", Qt::CaseInsensitive)) { file = new TagLib::FLAC::File(m_file.toUtf8().constData()); //If the flac has no ID3v2 tag, we create a new one and add the TBPM and TKEY frame addID3v2Tag( ((TagLib::FLAC::File*) file)->ID3v2Tag(true) ); //If the flac has no APE tag, we create a new one and add the TBPM and TKEY frame addXiphComment( ((TagLib::FLAC::File*) file)->xiphComment (true) ); } if (m_file.endsWith(".aif", Qt::CaseInsensitive) || m_file.endsWith(".aiff", Qt::CaseInsensitive)) { file = new TagLib::RIFF::AIFF::File(m_file.toUtf8().constData()); //If the flac has no ID3v2 tag, we create a new one and add the TBPM and TKEY frame addID3v2Tag( ((TagLib::RIFF::AIFF::File*) file)->tag() ); } //process standard tags if (file) { TagLib::Tag *tag = file->tag(); if (tag) { tag->setArtist(m_artist.toStdString()); tag->setTitle(m_title.toStdString()); tag->setAlbum(m_album.toStdString()); tag->setGenre(m_genre.toStdString()); tag->setComment(m_comment.toStdString()); uint year = m_year.toUInt(); if (year > 0) tag->setYear(year); uint tracknumber = m_tracknumber.toUInt(); if (tracknumber > 0) tag->setTrack(tracknumber); } //write audio tags to file int success = file->save(); if (success) { qDebug() << "Successfully updated metadata of track " << m_file; } else { qDebug() << "Could not update metadata of track " << m_file; } //delete file and return delete file; return success; } else { return false; } }