From 6abd1ed3e0a6f5b9ba08c7c6f7196a49e8efba81 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Thu, 27 Jun 2024 16:13:17 +0300 Subject: [PATCH] tweaking... Signed-off-by: Alex A. Naanou --- Viewer/features/metadata.js | 47 ++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/Viewer/features/metadata.js b/Viewer/features/metadata.js index 783906d5..eea3747e 100755 --- a/Viewer/features/metadata.js +++ b/Viewer/features/metadata.js @@ -113,6 +113,9 @@ var MetadataReaderActions = actions.Actions({ - force is true + NOTE: this will read metadata from both the image file as well as sidecar + (xmp) files, if available + NOTE: sidecar metadata fields take precedence over image metadata. NOTE: also see: .cacheMetadata(..) `, core.sessionQueueHandler('Read image metadata', @@ -142,29 +145,8 @@ var MetadataReaderActions = actions.Actions({ //var full_path = path.normalize(img.base_path +'/'+ img.path) var full_path = this.getImagePath(gid) - var readers = [] - // XMP sidecar files... - for(var ext of ['xmp', 'XMP']){ - var xmp_path = full_path.replace(/\.[a-zA-Z0-9]*$/, '.'+ ext) - if(fs.existsSync(xmp_path)){ - console.log("@@@@", xmp_path) - readers.push(new Promise(function(resolve, reject){ - fs.readFile(xmp_path, function(err, file){ - if(err){ - // XXX log error... - resolve({}) } - exiftool.metadata(file, function(err, data){ - if(err){ - // XXX log error... - resolve({}) - } else if(data.error){ - // XXX log error... - resolve({}) - } else { - console.log("@@@@", data) - resolve(data) } }) }) })) - break } } + var readers = [] // main image... readers.push(new Promise(function(resolve, reject){ fs.readFile(full_path, function(err, file){ @@ -191,6 +173,27 @@ var MetadataReaderActions = actions.Actions({ reject(data) } else { resolve(data) } }) }) }) ) + // XMP sidecar files... + // NOTE: sidecar files take precedence over image metadata... + for(var ext of ['xmp', 'XMP']){ + var xmp_path = full_path.replace(/\.[a-zA-Z0-9]*$/, '.'+ ext) + if(fs.existsSync(xmp_path)){ + readers.push(new Promise(function(resolve, reject){ + fs.readFile(xmp_path, function(err, file){ + if(err){ + // XXX log error... + resolve({}) } + exiftool.metadata(file, function(err, data){ + if(err){ + // XXX log error... + resolve({}) + } else if(data.error){ + // XXX log error... + resolve({}) + } else { + console.log("@@@@", data) + resolve(data) } }) }) })) + break } } // merge the data... return Promise.all(readers)