Try to retrieve a cover file in the parent directory, fixes #6
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user