From d0dad813900ab64ada4d1d69e3b71fc2a8a47a2b Mon Sep 17 00:00:00 2001 From: emeric Date: Sun, 23 Mar 2025 15:16:43 +0100 Subject: [PATCH] Fixed force scan not taken into account for artist.nfo files + hack to scan only artist.nfo files and not all nfo files --- .../scanner/impl/scanners/ArtistInfoFileScanner.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/libs/services/scanner/impl/scanners/ArtistInfoFileScanner.cpp b/src/libs/services/scanner/impl/scanners/ArtistInfoFileScanner.cpp index 25e29335..6176cdfe 100644 --- a/src/libs/services/scanner/impl/scanners/ArtistInfoFileScanner.cpp +++ b/src/libs/services/scanner/impl/scanners/ArtistInfoFileScanner.cpp @@ -22,6 +22,7 @@ #include #include "core/ILogger.hpp" +#include "core/String.hpp" #include "database/Artist.hpp" #include "database/ArtistInfo.hpp" #include "database/Db.hpp" @@ -171,6 +172,11 @@ namespace lms::scanner bool ArtistInfoFileScanner::needsScan(ScanContext& context, const FileToScan& file) const { + // Special case: only files named "artist.nfo" are compatible with this scanner + // Hack here since the scanner framework only handle extensions (the discover count is not accurate) + if (!core::stringUtils::stringCaseInsensitiveEqual(file.file.stem().string(), "artist")) + return false; + const Wt::WDateTime lastWriteTime{ utils::retrieveFileGetLastWrite(file.file) }; // Should rarely fail as we are currently iterating it if (!lastWriteTime.isValid()) @@ -179,6 +185,9 @@ namespace lms::scanner return false; } + if (context.scanOptions.fullScan) + return true; + db::Session& dbSession{ _db.getTLSSession() }; auto transaction{ dbSession.createReadTransaction() }; db::ArtistInfo::pointer artistInfo{ db::ArtistInfo::find(dbSession, file.file) };