diff --git a/conf/configs.ts b/conf/configs.ts index 8fd424c..ccb0129 100644 --- a/conf/configs.ts +++ b/conf/configs.ts @@ -32,7 +32,7 @@ class config_rangement { base_archive_folder = constants.base_archive_folder templates = mainTemplates; statistics = {}; - keepOriginalNameInRename = true; + keepOriginalNameInRename = false; log_actions = true; /** diff --git a/utils/finder.ts b/utils/finder.ts index 146f765..d649eb9 100644 --- a/utils/finder.ts +++ b/utils/finder.ts @@ -96,9 +96,9 @@ export default class finder { } else { log.debug(' -------- dateStampInFileNameOriginal: ', structureForFile.dateStampInFileNameOriginal) } - let fetchplace = cwd+'/'+structureForFile.fullPath - log.debug(' -------- trouver les infos exif', fetchplace) - this.findExifCreationDate(fetchplace) + + log.debug(' -------- trouver les infos exif', structureForFile.fullPath) + this.findExifCreationDate(structureForFile.fullPath) .then(data => { log.info(' ... chercher la date de création : "' + structureForFile.freeText + '"') log.debug('data', data) @@ -146,12 +146,14 @@ export default class finder { static renameFile(originalFileName: string, fileMixedNewName: string) { if (rangement_instance.keepOriginalNameInRename) { + log.debug(' +++++++++ on ajoute le nom original dans le free text +++++++',originalFileName ) fileMixedNewName = this.addOriginalFileNameIfMissing(originalFileName, fileMixedNewName) + log.debug(' +++++++++ nouveau nom', fileMixedNewName) } let self = this; fs.rename(originalFileName, fileMixedNewName, function (err) { - log.info('name changed', fileMixedNewName) + log.info(' ✅ name changed', fileMixedNewName) if (err) { log.info('rename ERROR: ' + err) } else { @@ -198,10 +200,10 @@ export default class finder { log.debug('fileProperties.dateStampExif', fileProperties.dateStampExif) let newName = '' + fileProperties.dateStampExif - + ' ' + // + ' ' + (rangement_instance.keepFreeText ? fileProperties.freeText : '') - + tagPlace - + fileProperties.extension + + tagPlace.trim() + + fileProperties.extension.trim() if (rangement_instance.replaceUnderscoreWithSpaces) { newName = newName.replace('_', ' ') @@ -224,14 +226,22 @@ export default class finder { log.info(' ______ shouldWeChangeName ', structureForFile.fileNameOriginal) let newName = this.makeFileNameFromProperties(structureForFile) log.debug('newName', newName) - if (structureForFile.fileNameOriginal !== newName && !this.otherRenames.includes(newName)) { + if(this.otherRenames.includes(newName)){ + log.debug('nouveau nom déjà présent dans les fichiers déjà renommés, on garde en état actuel') + return; + } + if (structureForFile.fileNameOriginal !== newName) { log.info('\n ancien nom :', structureForFile.fileNameOriginal) log.info(' nouveau nom:', newName) if (!this.mini_arguments['dry-run']) { - this.renameFile(structureForFile.fullPath, structureForFile.folderPath + newName) + log.debug('___________ structureForFile.folderPath', structureForFile.folderPath) + log.debug('___________ newName', newName) + + this.renameFile(structureForFile.fullPath, + structureForFile.folderPath + newName) } else { log.info('no renaming for real, this is a dry run') finder.statistics['filesNotModified']++ @@ -331,7 +341,7 @@ export default class finder { } static cleanSpaces(inputString: string) { - return inputString.trim().replace(/ *g/, ' ').replace(/ /, ' ') + return inputString.replace(/ *g/, ' ').replace(/ /, ' ').trim() } static searchAndReplaceInFileName(searchString: string, replaceString: string, fileName: string): string { @@ -422,12 +432,17 @@ export default class finder { */ static destructurateFileName(fullPath: string): fileDestructuration { let [folderPath, fileNameOriginal] = this.findFolderPath(fullPath) - let dateStampInFileNameOriginal = this.findFormattedDate(fileNameOriginal) + + // if path is relative, add the current working directory as full path part + if (/^\\(?!\\)/.test(fullPath)) { + fullPath = cwd + '/' + fullPath + } + return { fullPath, folderPath, fileNameOriginal, - dateStampInFileNameOriginal, + dateStampInFileNameOriginal: this.findFormattedDate(fileNameOriginal), dateStampExif: '', freeText: this.findFileNameFreeTextPart(fileNameOriginal), tags: this.findTagSectionInString(fileNameOriginal),