From 7957831878bb97fb31616f3697449cc353c3d5e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20P=2E?= Date: Fri, 10 Jul 2026 11:26:52 +0200 Subject: [PATCH] Support HIROXNIR layers replaced tech --- src/constants.js | 5 ++++- src/service/FilenameParser.js | 28 ++++++++++++++++++++++++++++ src/service/ImageRepository.js | 1 + 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/constants.js b/src/constants.js index 37de324..31accab 100644 --- a/src/constants.js +++ b/src/constants.js @@ -1,6 +1,7 @@ export const authors = { - DAN: 'Danilo P. Pavone', AUR: 'Aurélie Tournié', + DAN: 'Danilo P. Pavone', + IRE: 'Irene Gasperini', SAB: 'Sabrina Samelo', SOF: 'Sofia Ceccarelli', }; @@ -14,6 +15,7 @@ export const TECH_NAMES = { uvf: "Technical Photography UVF", mbi: "Multispectral Imaging", hiroxnir: "HIROX NIR", + hiroxnir_layers_replaced: "HIROX NIR layers replaced", splitview: "Split view VISr/NIR", }; @@ -21,5 +23,6 @@ export const COPYRIGHT = { dn: "Ministero della Cultura (Biblioteca Nazionale 'Vittorio Emanuele III' di Napoli)", do: "The Bodleian Libraries, University of Oxford", nir: "CNR - Consiglio Nazionale delle Ricerche, Ministero della Cultura (Biblioteca Nazionale 'Vittorio Emanuele III' di Napoli)", + hiroxnir_layers_replaced: "CNR - Consiglio Nazionale delle Ricerche, Ministero della Cultura (Biblioteca Nazionale 'Vittorio Emanuele III' di Napoli)", visr: "CNR - Consiglio Nazionale delle Ricerche, Ministero della Cultura (Biblioteca Nazionale 'Vittorio Emanuele III' di Napoli)", }; \ No newline at end of file diff --git a/src/service/FilenameParser.js b/src/service/FilenameParser.js index 05680c2..c966afa 100644 --- a/src/service/FilenameParser.js +++ b/src/service/FilenameParser.js @@ -30,6 +30,7 @@ import { authors, COPYRIGHT } from '../constants.js'; export const namePos = { hiroxnir: 1, + hiroxnir_layers_replaced: 1, nir: 1, visr: 1, hsi: 1, @@ -72,6 +73,19 @@ function parseHIROXNIRFilename(imgFilename) { date: parts[0].match(/\d{4}/)[0], } } +/** + * @param {string} imgFilename + * @returns {ParsedMetadata} + */ +function parseHIROXNIRLayersReplacedFilename(imgFilename) { + const prefix = imgFilename.split('_')[0]; + const parts = prefix.split('-'); + return { + papyrus: parts[1], + imageAuthor: authors[parts[0].replace(/\d{4}/,'')], + date: parts[0].match(/\d{4}/)[0], + } +} /** * @param {string} imgFilename * @returns {ParsedMetadata} @@ -122,6 +136,18 @@ function splitHIROXNIR(filename) { return {baseFolder, subfolder}; } +/** + * @param {string} filename The image filename + * @returns {ImgFolderNames} + */ +function splitHIROXNIRLayersReplaced(filename) { + let splitFilename = filename.split('_'); + const papyrusNum = splitFilename[0].split('-')[1]; + const baseFolder = `PHerc_${papyrusNum}`; + const subfolder = `PHerc_${papyrusNum}_HIROXNIR_LAYERS_REPLACED`; + + return {baseFolder, subfolder}; +} /** * @param {string} filename The image filename * @returns {ImgFolderNames} @@ -162,6 +188,7 @@ function splitDNO(filename) { const splitters = { hiroxnir: splitHIROXNIR, + hiroxnir_layers_replaced: splitHIROXNIRLayersReplaced, nir: splitNIR, visr: splitNIR, dn: splitDNO, @@ -176,6 +203,7 @@ const extractors = { hsi: parseNIRFilename, visr: parseNIRFilename, hiroxnir: parseHIROXNIRFilename, + hiroxnir_layers_replaced: parseHIROXNIRFilename, } /** * Return metadata object from parsed diff --git a/src/service/ImageRepository.js b/src/service/ImageRepository.js index 34fa6bb..9d75d86 100644 --- a/src/service/ImageRepository.js +++ b/src/service/ImageRepository.js @@ -48,6 +48,7 @@ export async function getParamsFromFolders () { `${process.env.IMAGES_DIR}/${p}/${tech}` ); files = files.filter(file => /(tiff?|jpe?g|jp2|bmp)/.test(file)); + if (files.length) { techniques.push(tech.replace(/PHerc_\d+_/i, '')); }