From 3a311c35ff35b947215adb029bd3f8f98fb22870 Mon Sep 17 00:00:00 2001 From: emeric Date: Tue, 3 Nov 2020 16:19:06 +0100 Subject: [PATCH] Added MBID in the scanner's report list to make duplicate spotting easier. fixes #103 --- src/libs/scanner/impl/MediaScanner.cpp | 2 +- .../include/scanner/MediaScannerStats.hpp | 5 +++-- src/lms/ui/admin/ScannerController.cpp | 20 +++++++++++++++++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/libs/scanner/impl/MediaScanner.cpp b/src/libs/scanner/impl/MediaScanner.cpp index d82b63e7..c3ac4c25 100644 --- a/src/libs/scanner/impl/MediaScanner.cpp +++ b/src/libs/scanner/impl/MediaScanner.cpp @@ -1012,7 +1012,7 @@ MediaScanner::checkDuplicatedAudioFiles(ScanStats& stats) if (track->getMBID()) { LMS_LOG(DBUPDATER, INFO) << "Found duplicated MBID [" << track->getMBID()->getAsString() << "], file: " << track->getPath().string() << " - " << track->getName(); - stats.duplicates.emplace_back(ScanDuplicate {track->getPath(), DuplicateReason::SameMBID}); + stats.duplicates.emplace_back(ScanDuplicate {track.id(), DuplicateReason::SameMBID}); } } diff --git a/src/libs/scanner/include/scanner/MediaScannerStats.hpp b/src/libs/scanner/include/scanner/MediaScannerStats.hpp index 145ea5c3..b1996647 100644 --- a/src/libs/scanner/include/scanner/MediaScannerStats.hpp +++ b/src/libs/scanner/include/scanner/MediaScannerStats.hpp @@ -24,6 +24,8 @@ #include #include +#include "database/Types.hpp" + namespace Scanner { enum class ScanErrorType @@ -51,9 +53,8 @@ namespace Scanner { struct ScanDuplicate { - std::filesystem::path file; + Database::IdType trackId; DuplicateReason reason; - }; enum class ScanProgressStep : unsigned diff --git a/src/lms/ui/admin/ScannerController.cpp b/src/lms/ui/admin/ScannerController.cpp index 2e394e61..7f7d2796 100644 --- a/src/lms/ui/admin/ScannerController.cpp +++ b/src/lms/ui/admin/ScannerController.cpp @@ -28,6 +28,8 @@ #include #include +#include "database/Session.hpp" +#include "database/Track.hpp" #include "utils/Service.hpp" #include "LmsApplication.hpp" @@ -82,8 +84,22 @@ class ReportResource : public Wt::WResource response.out() << Wt::WString::tr("Lms.Admin.ScannerController.duplicates-header").arg(_stats.duplicates.size()).toUTF8() << std::endl; - for (const auto& duplicate : _stats.duplicates) - response.out() << duplicate.file.string() << " - " << duplicateReasonToWString(duplicate.reason).toUTF8() << std::endl; + { + auto transaction {LmsApp->getDbSession().createSharedTransaction()}; + + for (const auto& duplicate : _stats.duplicates) + { + const auto& track {Database::Track::getById(LmsApp->getDbSession(), duplicate.trackId)}; + if (!track) + continue; + + response.out() << track->getPath().string(); + if (auto mbid {track->getMBID()}) + response.out() << " (MBID " << mbid->getAsString() << ")"; + + response.out() << " - " << duplicateReasonToWString(duplicate.reason).toUTF8() << '\n'; + } + } } private: