Added MBID in the scanner's report list to make duplicate spotting easier. fixes #103

This commit is contained in:
emeric
2020-11-03 16:19:32 +01:00
parent 3599dc8659
commit 3a311c35ff
3 changed files with 22 additions and 5 deletions
+1 -1
View File
@@ -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});
}
}
@@ -24,6 +24,8 @@
#include <filesystem>
#include <vector>
#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
+18 -2
View File
@@ -28,6 +28,8 @@
#include <Wt/WResource.h>
#include <Wt/WSplitButton.h>
#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: