From 7e33524b7532e0392611a824614f6df370ac7a01 Mon Sep 17 00:00:00 2001 From: Marcos CARDINOT Date: Fri, 30 May 2014 14:30:29 +0100 Subject: Improvements in cover art search (TIO::parseCoverArt) - add method to parse cover arts into sound file (extracting embedded covers) This change is useful to handle existing users --- src/library/coverart.cpp | 60 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 16 deletions(-) (limited to 'src/library/coverart.cpp') diff --git a/src/library/coverart.cpp b/src/library/coverart.cpp index 7eea3c68c6..1d2de1ebd7 100644 --- a/src/library/coverart.cpp +++ b/src/library/coverart.cpp @@ -38,6 +38,22 @@ bool CoverArt::saveFile(QImage cover, QString location) { return false; } +QString CoverArt::saveEmbeddedCover(QImage cover, QString artist, + QString album, QString filename) { + if (cover.isNull()) { + return ""; + } + + QString coverName = getDefaultCoverName(artist, album, filename); + QString location = getDefaultCoverLocation(coverName); + + if (saveFile(cover, location)) { + return location; + } + + return ""; +} + QString CoverArt::searchInDiskCache(QString coverArtName) { // Some image extensions QStringList extList; @@ -81,10 +97,6 @@ QString CoverArt::searchInTrackDirectory(QString directory) { return QString(); } -QString CoverArt::getDefaultCoverLocation(QString coverArtName) { - return getStoragePath() + coverArtName + "." + m_cDefaultImageFormat; -} - QString CoverArt::getDefaultCoverName(QString artist, QString album, QString filename) { @@ -95,34 +107,50 @@ QString CoverArt::getDefaultCoverName(QString artist, } } -QString CoverArt::searchCoverArtFile(TrackInfoObject* pTrack) { - // creates default cover art name +QString CoverArt::getDefaultCoverLocation(QString coverArtName) { + return getStoragePath() + coverArtName + "." + m_cDefaultImageFormat; +} + +QString CoverArt::getDefaultCoverLocation(TrackPointer pTrack) { + QString coverArtName = getDefaultCoverName(pTrack->getArtist(), + pTrack->getAlbum(), + pTrack->getFilename()); + + return getDefaultCoverLocation(coverArtName); +} + +QString CoverArt::searchCoverArtFile(TrackPointer pTrack) { + QString coverArtName = getDefaultCoverName(pTrack->getArtist(), pTrack->getAlbum(), pTrack->getFilename()); // // Step 1: Look for cover art in disk-cache directory. - // (all embedded covers will already be there) // - QString coverArtLocation = searchInDiskCache(coverArtName); + QString coverLocation = searchInDiskCache(coverArtName); + if (!coverLocation.isEmpty()) { + return coverLocation; // FOUND! + } - if (!coverArtLocation.isEmpty()) { - return coverArtLocation; // FOUND! + // + // Step 2: Look for embedded cover art. + // + coverLocation = pTrack->parseCoverArt(); + if (!coverLocation.isEmpty()) { + return coverLocation; // FOUND! } // - // Step 2: Look for cover stored in track diretory. + // Step 3: Look for cover stored in track diretory. // QImage image(searchInTrackDirectory(pTrack->getDirectory())); - // load default location - coverArtLocation = getDefaultCoverLocation(coverArtName); - if (!image.isNull()) { // try to store the image in our disk-cache! - if (saveFile(image, coverArtLocation)) { - return coverArtLocation; // FOUND! + coverLocation = getDefaultCoverLocation(coverArtName); + if (saveFile(image, coverLocation)) { + return coverLocation; // FOUND! } } -- cgit v1.2.3