//static CoverArt CoverArtUtils::guessCoverArt(TrackPointer pTrack) { CoverArt art; art.info.source = CoverInfo::GUESSED; if (pTrack.isNull()) { return art; } const QFileInfo fileInfo(pTrack->getFileInfo()); art.image = extractEmbeddedCover(fileInfo, pTrack->getSecurityToken()); if (!art.image.isNull()) { // TODO() here we my introduce a duplicate hash code art.info.hash = calculateHash(art.image); art.info.coverLocation = QString(); art.info.type = CoverInfo::METADATA; qDebug() << "CoverArtUtils::guessCoverArt found metadata art" << art; return art; } QLinkedList<QFileInfo> possibleCovers = findPossibleCoversInFolder( fileInfo.absolutePath()); art = selectCoverArtForTrack(pTrack.data(), possibleCovers); if (art.info.type == CoverInfo::FILE) { qDebug() << "CoverArtUtils::guessCoverArt found file art" << art; } else { qDebug() << "CoverArtUtils::guessCoverArt didn't find art" << art; } return art; }
void TrackExportWorker::exportTrack(TrackPointer track) { QString sourceFilename = track->getLocation(); auto source_fileinfo = track->getFileInfo(); const QString dest_filename = QDir(m_destDir).filePath( source_fileinfo.fileName()); QFileInfo dest_fileinfo(dest_filename); if (dest_fileinfo.exists()) { switch (m_overwriteMode) { // Give the user the option to overwrite existing files in the destination. case OverwriteMode::ASK: switch (makeOverwriteRequest(dest_filename)) { case OverwriteAnswer::SKIP: case OverwriteAnswer::SKIP_ALL: qDebug() << "skipping" << sourceFilename; return; case OverwriteAnswer::OVERWRITE: case OverwriteAnswer::OVERWRITE_ALL: break; case OverwriteAnswer::CANCEL: m_errorMessage = tr("Export process was canceled"); stop(); return; } break; case OverwriteMode::SKIP_ALL: qDebug() << "skipping" << sourceFilename; return; case OverwriteMode::OVERWRITE_ALL:; } // Remove the existing file in preparation for overwriting. QFile dest_file(dest_filename); qDebug() << "Removing existing file" << dest_filename; if (!dest_file.remove()) { const QString error_message = tr( "Error removing file %1: %2. Stopping.").arg( dest_filename, dest_file.errorString()); qWarning() << error_message; m_errorMessage = error_message; stop(); return; } } qDebug() << "Copying" << sourceFilename << "to" << dest_filename; QFile source_file(sourceFilename); if (!source_file.copy(dest_filename)) { const QString error_message = tr( "Error exporting track %1 to %2: %3. Stopping.").arg( sourceFilename, dest_filename, source_file.errorString()); qWarning() << error_message; m_errorMessage = error_message; stop(); return; } }
void TagFetcher::tagsFetched(int index, const MusicBrainzClient::ResultList& results) { if (index >= m_tracks.count()) { return; } // qDebug() << "Tagfetcher got musicbrainz results and now parses them"; const TrackPointer originalTrack = m_tracks[index]; QList<TrackPointer> tracksGuessed; foreach (const MusicBrainzClient::Result& result, results) { TrackPointer track( Track::newTemporary( originalTrack->getFileInfo(), originalTrack->getSecurityToken())); track->setTitle(result.m_title); track->setArtist(result.m_artist); track->setAlbum(result.m_album); track->setDuration(result.m_duration); track->setTrackNumber(QString::number(result.m_track)); track->setYear(QString::number(result.m_year)); tracksGuessed << track; }