Try to retrieve a cover file in the parent directory, fixes #6

This commit is contained in:
emeric
2019-10-26 14:06:32 +02:00
parent 2fa3663289
commit c9ffbd125c
2 changed files with 17 additions and 16 deletions
+14 -11
View File
@@ -30,17 +30,9 @@
namespace {
bool
isFileSupported(const std::filesystem::path& file, const std::vector<std::filesystem::path> extensions)
isFileSupported(const std::filesystem::path& file, const std::vector<std::filesystem::path>& extensions)
{
std::filesystem::path fileExtension = file.extension();
for (auto extension : extensions)
{
if (extension == fileExtension)
return true;
}
return false;
return (std::find(std::cbegin(extensions), std::cend(extensions), file.extension()) != std::cend(extensions));
}
} // namespace
@@ -130,7 +122,7 @@ Grabber::getCoverPaths(const std::filesystem::path& directoryPath) const
std::filesystem::directory_iterator itEnd;
while (!ec && itPath != itEnd)
{
std::filesystem::path path = *itPath;
const std::filesystem::path path {*itPath};
itPath.increment(ec);
if (!std::filesystem::is_regular_file(path))
@@ -175,6 +167,7 @@ Grabber::getFromTrack(Database::Session& dbSession, Database::IdType trackId, st
std::optional<Image::Image> cover;
bool hasCover {};
bool isMultiDisc {};
std::filesystem::path trackPath;
{
@@ -185,6 +178,10 @@ Grabber::getFromTrack(Database::Session& dbSession, Database::IdType trackId, st
{
hasCover = track->hasCover();
trackPath = track->getPath();
auto release {track->getRelease()};
if (release && release->getTotalDiscNumber() > 1)
isMultiDisc = true;
}
}
@@ -194,6 +191,12 @@ Grabber::getFromTrack(Database::Session& dbSession, Database::IdType trackId, st
if (!cover)
cover = getFromDirectory(trackPath.parent_path());
if (!cover && isMultiDisc)
{
if (trackPath.parent_path().has_parent_path())
cover = getFromDirectory(trackPath.parent_path().parent_path());
}
if (!cover)
cover = getDefaultCover(size);
else
+3 -5
View File
@@ -65,13 +65,11 @@ class Grabber
std::mutex _mutex;
std::map<std::size_t /* size */, Image::Image> _defaultCovers;
std::vector<std::filesystem::path> _fileExtensions
= {".jpg", ".jpeg", ".png", ".bmp"}; // TODO parametrize
static inline const std::vector<std::filesystem::path> _fileExtensions {".jpg", ".jpeg", ".png", ".bmp"}; // TODO parametrize
std::size_t _maxFileSize = 5000000;
static inline const std::size_t _maxFileSize {10000000};
std::vector<std::filesystem::path> _preferredFileNames
= {"cover", "front"}; // TODO parametrize
static inline const std::vector<std::filesystem::path> _preferredFileNames {"cover", "front"}; // TODO parametrize
};
} // namespace CoverArt