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 KFlacPlugin::readInfo( KFileMetaInfo& info, uint what ) { if ( info.path().isEmpty() ) // remote file return false; bool readComment = false; bool readTech = false; if (what & (KFileMetaInfo::Fastest | KFileMetaInfo::DontCare | KFileMetaInfo::ContentInfo)) readComment = true; if (what & (KFileMetaInfo::Fastest | KFileMetaInfo::DontCare | KFileMetaInfo::TechnicalInfo)) readTech = true; TagLib::File *file = 0; if (info.mimeType() == "audio/x-flac") file = new TagLib::FLAC::File(QFile::encodeName(info.path()).data(), readTech); #ifdef TAGLIB_1_2 else file = new TagLib::Ogg::FLAC::File(QFile::encodeName(info.path()).data(), readTech); #endif if (!file || !file->isValid()) { kdDebug(7034) << "Couldn't open " << file->name() << endl; delete file; return false; } if(readComment && file->tag()) { KFileMetaInfoGroup commentgroup = appendGroup(info, "Comment"); QString date = file->tag()->year() > 0 ? QString::number(file->tag()->year()) : QString::null; QString track = file->tag()->track() > 0 ? QString::number(file->tag()->track()) : QString::null; appendItem(commentgroup, "Title", TStringToQString(file->tag()->title()).stripWhiteSpace()); appendItem(commentgroup, "Artist", TStringToQString(file->tag()->artist()).stripWhiteSpace()); appendItem(commentgroup, "Album", TStringToQString(file->tag()->album()).stripWhiteSpace()); appendItem(commentgroup, "Date", date); appendItem(commentgroup, "Comment", TStringToQString(file->tag()->comment()).stripWhiteSpace()); appendItem(commentgroup, "Tracknumber", track); appendItem(commentgroup, "Genre", TStringToQString(file->tag()->genre()).stripWhiteSpace()); } if (readTech && file->audioProperties()) { KFileMetaInfoGroup techgroup = appendGroup(info, "Technical"); TagLib::FLAC::Properties *properties = (TagLib::FLAC::Properties*)(file->audioProperties()); appendItem(techgroup, "Bitrate", properties->bitrate()); appendItem(techgroup, "Sample Rate", properties->sampleRate()); appendItem(techgroup, "Sample Width", properties->sampleWidth()); appendItem(techgroup, "Channels", properties->channels()); appendItem(techgroup, "Length", properties->length()); } delete file; return true; }