Move duplicate (case difference) files into corrupt/

Signed-off-by: James Ketrenos <james_git@ketrenos.com>
This commit is contained in:
James Ketr 2018-08-28 14:55:08 -07:00
parent 57bd5a7683
commit fa779b300e

View File

@ -13,6 +13,26 @@ const picturesPath = config.get("picturesPath");
const processQueue = [], triedClean = [];
function removeNewerFile(path, fileA, fileB) {
fs.stat(path + "/" + fileA, function(err, statsA) {
if (err) {
return;
}
fs.stat(path + "/" + fileB, function(err, statsB) {
if (err) {
return;
}
if (statsA.mtime > statsB.mtime) {
console.log("Removing file by moving to 'corrupt':" + fileA);
moveCorrupt(path, fileA);
} else {
console.log("Removing file by moving to 'corrupt':" + fileB);
moveCorrupt(path, fileB);
}
});
});
}
function scanDir(parent, path) {
let extensions = [ "jpg", "jpeg", "png", "gif", "nef" ],
re = new RegExp("\.((" + extensions.join(")|(") + "))$", "i"),
@ -73,11 +93,18 @@ function scanDir(parent, path) {
/* Remove 'thumbs' and 'raw' directories from being processed */
files = files.filter(function(file) {
for (var i = 0; i < files.length; i++) {
/* If this file has an original NEF on the system, don't add the JPG to the
* DB */
/* If this file has an original NEF on the system, don't add the JPG to the DB */
if (/\.nef$/i.exec(files[i]) && file == files[i].replace(/\.nef$/i, ".jpg")) {
return false;
}
/* If there is a different CASE (eg. JPG vs jpg) don't add it, and remove the 'lower case'
* version from disk. */
if (file != files[i] && file.toUpperCase() == files[i]) {
removeNewerFile(path, file, files[i]);
console.log("Duplicate file in " + path + ": ", file, files[i]);
return false;
}
}
return file != "raw" && file != "thumbs" && file != ".git" && file != "corrupt";
@ -225,7 +252,10 @@ function convertNefToJpg(path, file) {
}
function moveCorrupt(path, file) {
path = picturesPath + path;
if (path.indexOf(picturesPath) != 0) {
path = picturesPath + path;
}
console.warn("Moving corrupt file '" + file + "' to " + path + "/corrupt");
return mkdirPromise(path + "/corrupt").then(function() {