From c4005c5183946f1085fe6dc81f38b73786fcc5ad Mon Sep 17 00:00:00 2001 From: emeric Date: Mon, 30 May 2022 20:02:36 +0200 Subject: [PATCH] Made preferred file names for cover configurable. fixes #238 --- conf/lms.conf | 3 +++ src/libs/services/cover/impl/CoverService.cpp | 16 ++++++++++++++++ src/libs/services/cover/impl/CoverService.hpp | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/conf/lms.conf b/conf/lms.conf index b44af624..7817c217 100644 --- a/conf/lms.conf +++ b/conf/lms.conf @@ -71,5 +71,8 @@ cover-max-cache-size = 30; # JPEG quality for covers (range is 1-100) cover-jpeg-quality = 75; +# Preferred file names for covers (order is important) +cover-preferred-file-names = ("cover", "front" ); + # Set to true if you want to hide duplicate tracks scanner-skip-duplicate-recording-mbid = false; diff --git a/src/libs/services/cover/impl/CoverService.cpp b/src/libs/services/cover/impl/CoverService.cpp index a9c2b8e4..1abcd910 100644 --- a/src/libs/services/cover/impl/CoverService.cpp +++ b/src/libs/services/cover/impl/CoverService.cpp @@ -31,6 +31,7 @@ #include "utils/IConfig.hpp" #include "utils/Logger.hpp" #include "utils/Random.hpp" +#include "utils/String.hpp" #include "utils/Utils.hpp" namespace @@ -68,6 +69,19 @@ namespace return res; } + + std::vector constructPreferredFileNames() + { + std::vector res; + + Service::get()->visitStrings("cover-preferred-file-names", + [&res](std::string_view fileName) + { + res.emplace_back(fileName); + }, {"cover", "front"}); + + return res; + } } namespace Cover { @@ -94,6 +108,7 @@ CoverService::CoverService(Database::Db& db, , _defaultCoverPath {defaultCoverPath} , _maxCacheSize {Service::get()->getULong("cover-max-cache-size", 30) * 1000 * 1000} , _maxFileSize {Service::get()->getULong("cover-max-file-size", 10) * 1000 * 1000} + , _preferredFileNames {constructPreferredFileNames()} { setJpegQuality(Service::get()->getULong("cover-jpeg-quality", 75)); @@ -101,6 +116,7 @@ CoverService::CoverService(Database::Db& db, LMS_LOG(COVER, INFO) << "Default cover path = '" << _defaultCoverPath.string() << "'"; LMS_LOG(COVER, INFO) << "Max cache size = " << _maxCacheSize; LMS_LOG(COVER, INFO) << "Max file size = " << _maxFileSize; + LMS_LOG(COVER, INFO) << "Preferred file names: " << StringUtils::joinStrings(_preferredFileNames, ","); #if LMS_SUPPORT_IMAGE_GM GraphicsMagick::init(execPath); diff --git a/src/libs/services/cover/impl/CoverService.hpp b/src/libs/services/cover/impl/CoverService.hpp index bf6e9d6c..f23d437a 100644 --- a/src/libs/services/cover/impl/CoverService.hpp +++ b/src/libs/services/cover/impl/CoverService.hpp @@ -129,7 +129,7 @@ namespace Cover const std::size_t _maxCacheSize; static inline const std::vector _fileExtensions {".jpg", ".jpeg", ".png", ".bmp"}; // TODO parametrize const std::size_t _maxFileSize; - static inline const std::vector _preferredFileNames {"cover", "front"}; // TODO parametrize + const std::vector _preferredFileNames; unsigned _jpegQuality; };