Added MBID in the scanner's report list to make duplicate spotting easier. fixes #103
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user