diff --git a/controllers/manifest.mjs b/controllers/manifest.mjs index 7e5e22d..10e5f49 100644 --- a/controllers/manifest.mjs +++ b/controllers/manifest.mjs @@ -16,7 +16,7 @@ export default async function generateManifest(manifestId) { manifest.generateLabel(); const images = await Common.getImageList(manifestId); - + manifest = await Common.populateCanvases( manifest, images, diff --git a/src/Image.js b/src/Image.js index e460d61..3d37f68 100644 --- a/src/Image.js +++ b/src/Image.js @@ -4,17 +4,26 @@ import IIIFResource from './IIIFResource.js'; * @todo Move to common.js?! */ const splitter = { + HIROXNIR: splitHIROXNIR, NIR: splitNIR, DN: splitDNO, DO: splitDNO, HSI: splitHSI }; +function splitHIROXNIR(filename) { + let splitFilename = filename.split('_'); + const papyrusNum = splitFilename[0].split('-')[1]; + const baseFolder = `PHerc_${papyrusNum}`; + const subfolder = `PHerc_${papyrusNum}_HIROXNIR`; + + return {baseFolder, subfolder}; +} function splitNIR(filename) { let splitFilename = filename.split('_'); - const papyrusNumb = splitFilename[0].split('-')[2]; - const baseFolder = `PHerc_${papyrusNumb}`; - const subfolder = `PHerc_${papyrusNumb}_${splitFilename[2].split('-')[0]}`; + const papyrusNum = splitFilename[0].split('-')[2]; + const baseFolder = `PHerc_${papyrusNum}`; + const subfolder = `PHerc_${papyrusNum}_${splitFilename[2].split('-')[0]}`; return {baseFolder, subfolder}; } @@ -79,7 +88,7 @@ class Image { * @param {string} filename The image's complete filename */ generateID(serviceURL, filename) { - let splitFn = splitter[/(NIR|DO|DN|HSI)/.exec(filename)[0]]; + let splitFn = splitter[/((HIROX)?NIR|DO|DN|HSI)/.exec(filename)[0]]; const {baseFolder, subfolder} = splitFn(filename); @@ -109,4 +118,4 @@ class Image { } } -export default Image; \ No newline at end of file +export default Image; diff --git a/src/common.js b/src/common.js index a9fcb64..b258c2d 100644 --- a/src/common.js +++ b/src/common.js @@ -16,13 +16,25 @@ const TECH_NAMES = { hsi: "SWIR Hyperspectral Imaging", uvf: "Technical Photography UVF", mbi: "Multispectral Imaging", - md: "Digital Microscope", + hiroxnir: "HIROX Near Infrared", } const authors = { DAN: 'Danilo P. Pavone', AUR: 'Aurélie Tournié', SAB: 'Sabrina Samelo', + SOF: 'Sofia Ceccarelli', }; +/** + * @param {string} imgFilename + * @returns {{papyrus:string,imageAuthor:string,date:string}} + */ +function extractHIROXNIRMetadata(imgFilename) { + return { + papyrus: imgFilename.split('_')[0].split('-')[1], + imageAuthor: authors[imgFilename.split('-')[0].replace(/\d{4}/,'')], + date: imgFilename.split('-')[0].match(/\d{4}/)[0], + } +} /** * @param {string} imgFilename * @returns {{papyrus:string,imageAuthor:string,date:string}} @@ -71,7 +83,12 @@ Common.getParamsFromFolders = async function() { for (let p of papyri) { let techniques = []; for (let tech of await fs.promises.readdir(`${process.env.IMAGES_DIR}/${p}`)) { - techniques.push(tech.replace(/PHerc_\d+_/i, '')); + let files = await fs.promises.readdir( + `${process.env.IMAGES_DIR}/${p}/${tech}` + ); + if (files.length) { + techniques.push(tech.replace(/PHerc_\d+_/i, '')); + } } params.push({ @@ -149,6 +166,7 @@ Common.createCanvas = async function (manifest, filename) { ); const namePos = { + hiroxnir: 1, nir: 1, hsi: 1, do: 3, @@ -157,6 +175,7 @@ Common.createCanvas = async function (manifest, filename) { const canvasName = filename.split('_')[namePos[manifest.technique]] .replace(/\.\w{1,3}$/, ''); + canvas.generateID(manifest.resourceId, canvasName); let label = canvasName .replace(/c(\w{1,2})0+(\d+).*(\.\w{2,3})?$/i, function (str, c, number) { @@ -172,6 +191,8 @@ Common.createCanvas = async function (manifest, filename) { let image = new Image(canvas.id); image.generateID(process.env.IMAGE_SERVER_URL, filename); + console.log("DEBUG image.id: "+ image.id); + const imgSize = await this.getImageSize(image.id); image.setSize(imgSize.height, imgSize.width); @@ -237,6 +258,7 @@ Common.getMetadataFromImgName = function (imgFilename, technique) { dn: extractDNMetadata, do: extractDOMetadata, hsi: extractNIRMetadata, + hiroxnir: extractHIROXNIRMetadata, } return extractor[technique](imgFilename);