Some error handling + change DN and DO filename parsing
This commit is contained in:
parent
b9237af986
commit
dccec35f77
@ -6,30 +6,56 @@ import express from 'express';
|
|||||||
|
|
||||||
let router = express.Router();
|
let router = express.Router();
|
||||||
|
|
||||||
|
// TODO Log errors
|
||||||
|
|
||||||
/* GET manifest JSON */
|
/* GET manifest JSON */
|
||||||
router.get('/iiif/:manifestid/manifest', async function(req, res) {
|
router.get('/iiif/:manifestid/manifest', async function(req, res) {
|
||||||
const manifest = await generateManifest(req.params.manifestid)
|
let manifest = {};
|
||||||
res.set('Access-Control-Allow-Origin', '*');
|
res.set('Access-Control-Allow-Origin', '*');
|
||||||
|
try {
|
||||||
|
manifest = await generateManifest(req.params.manifestid)
|
||||||
|
} catch(error) {
|
||||||
|
res.status(500).json({
|
||||||
|
status: 500,
|
||||||
|
message: 'There was an error processing this request',
|
||||||
|
details: error
|
||||||
|
});
|
||||||
|
}
|
||||||
res.json(manifest);
|
res.json(manifest);
|
||||||
});
|
});
|
||||||
|
|
||||||
/* GET canvas JSON */
|
/* GET canvas JSON */
|
||||||
router.get('/iiif/:manifestid/canvas/:name', async function(req, res) {
|
router.get('/iiif/:manifestid/canvas/:name', async function(req, res) {
|
||||||
const canvas = await generateCanvas(req.params.manifestid, req.params.name)
|
let canvas = {};
|
||||||
res.set('Access-Control-Allow-Origin', '*');
|
res.set('Access-Control-Allow-Origin', '*');
|
||||||
|
try {
|
||||||
|
canvas = await generateCanvas(req.params.manifestid, req.params.name)
|
||||||
|
} catch(error) {
|
||||||
|
res.status(500).json({status: 500, message: 'There was an error processing this request'});
|
||||||
|
}
|
||||||
res.json(canvas);
|
res.json(canvas);
|
||||||
});
|
});
|
||||||
|
|
||||||
/* GET sequence JSON */
|
/* GET sequence JSON */
|
||||||
router.get('/iiif/:manifestid/sequence/:name', async function(req, res) {
|
router.get('/iiif/:manifestid/sequence/:name', async function(req, res) {
|
||||||
const sequence = await generateSequence(req.params.manifestid, req.params.name)
|
let sequence = {};
|
||||||
res.set('Access-Control-Allow-Origin', '*');
|
res.set('Access-Control-Allow-Origin', '*');
|
||||||
|
try {
|
||||||
|
sequence = await generateSequence(req.params.manifestid, req.params.name)
|
||||||
|
} catch(error) {
|
||||||
|
res.status(500).json({status: 500, message: 'There was an error processing this request'});
|
||||||
|
}
|
||||||
res.json(sequence);
|
res.json(sequence);
|
||||||
});
|
});
|
||||||
|
|
||||||
/* GET possible params for manifest responses */
|
/* GET possible params for manifest responses */
|
||||||
router.get('/params', async function(req, res) {
|
router.get('/params', async function(req, res) {
|
||||||
|
res.set('Access-Control-Allow-Origin', '*');
|
||||||
|
try {
|
||||||
res.json(await exposeParams());
|
res.json(await exposeParams());
|
||||||
|
} catch(error) {
|
||||||
|
res.status(500).json({status: 500, message: 'There was an error processing this request'});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
export default router;
|
export default router;
|
@ -41,8 +41,9 @@ function splitHSI(filename) {
|
|||||||
|
|
||||||
function splitDNO(filename) {
|
function splitDNO(filename) {
|
||||||
let splitFilename = filename.split('_');
|
let splitFilename = filename.split('_');
|
||||||
const baseFolder = splitFilename.slice(0,2).join('_');
|
const papyrusNumb = splitFilename[1];
|
||||||
const subfolder = splitFilename.slice(0,3).join('_');
|
const baseFolder = `PHerc_${papyrusNumb}`;
|
||||||
|
const subfolder = `PHerc_${papyrusNumb}_${splitFilename[0]}`;
|
||||||
|
|
||||||
return {baseFolder, subfolder};
|
return {baseFolder, subfolder};
|
||||||
}
|
}
|
||||||
|
@ -86,6 +86,7 @@ Common.getParamsFromFolders = async function() {
|
|||||||
let files = await fs.promises.readdir(
|
let files = await fs.promises.readdir(
|
||||||
`${process.env.IMAGES_DIR}/${p}/${tech}`
|
`${process.env.IMAGES_DIR}/${p}/${tech}`
|
||||||
);
|
);
|
||||||
|
files = files.filter(file => /(tiff?|jpe?g|jp2|bmp)/.test(file));
|
||||||
if (files.length) {
|
if (files.length) {
|
||||||
techniques.push(tech.replace(/PHerc_\d+_/i, ''));
|
techniques.push(tech.replace(/PHerc_\d+_/i, ''));
|
||||||
}
|
}
|
||||||
@ -114,7 +115,7 @@ Common.getImageList = async function (manifestId) {
|
|||||||
`${process.env.IMAGES_DIR}/${baseFolder}/${folderName}`
|
`${process.env.IMAGES_DIR}/${baseFolder}/${folderName}`
|
||||||
);
|
);
|
||||||
|
|
||||||
files = files.filter(file => path.extname(file) !== '.csv');
|
files = files.filter(file => !/(c2r|copertina|camice|tit)/.test(file) && !file.startsWith('.'));
|
||||||
|
|
||||||
return files;
|
return files;
|
||||||
}
|
}
|
||||||
@ -149,9 +150,7 @@ Common.getImageSize = async function (imageId) {
|
|||||||
Common.getImageName = async function (canvas) {
|
Common.getImageName = async function (canvas) {
|
||||||
const images = await this.getImageList(canvas.resourceId);
|
const images = await this.getImageList(canvas.resourceId);
|
||||||
|
|
||||||
return images.filter(
|
return images.filter(i => i.includes(canvas.name))[0];
|
||||||
i => i.includes(canvas.name)
|
|
||||||
)[0];
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Create a canvas from an image filename
|
* Create a canvas from an image filename
|
||||||
@ -169,8 +168,8 @@ Common.createCanvas = async function (manifest, filename) {
|
|||||||
hiroxnir: 1,
|
hiroxnir: 1,
|
||||||
nir: 1,
|
nir: 1,
|
||||||
hsi: 1,
|
hsi: 1,
|
||||||
do: 3,
|
do: 2,
|
||||||
dn: 3
|
dn: 2
|
||||||
};
|
};
|
||||||
|
|
||||||
const canvasName = filename.split('_')[namePos[manifest.technique]]
|
const canvasName = filename.split('_')[namePos[manifest.technique]]
|
||||||
@ -211,22 +210,19 @@ Common.createCanvas = async function (manifest, filename) {
|
|||||||
Common.populateCanvases = async function (manifest, images) {
|
Common.populateCanvases = async function (manifest, images) {
|
||||||
const sequence = new Sequence(process.env.BASE_URL);
|
const sequence = new Sequence(process.env.BASE_URL);
|
||||||
// There's only one sequence
|
// There's only one sequence
|
||||||
|
|
||||||
sequence.generateID(manifest.resourceId, 0);
|
sequence.generateID(manifest.resourceId, 0);
|
||||||
|
|
||||||
// Camice e copertina all'inizio per DN e DO
|
|
||||||
if (manifest.technique.startsWith('d')) {
|
|
||||||
images = [].concat(
|
|
||||||
images
|
|
||||||
.filter(i => i.includes('camice') || i.includes('copertina'))
|
|
||||||
.reverse(),
|
|
||||||
images
|
|
||||||
.filter(i => !i.includes('camice') && !i.includes('copertina'))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let img of images) {
|
for (let img of images) {
|
||||||
|
// Skip failing images (TODO log error to file)
|
||||||
|
try {
|
||||||
let canvas = await this.createCanvas(manifest, img);
|
let canvas = await this.createCanvas(manifest, img);
|
||||||
sequence.addCanvas(canvas);
|
sequence.addCanvas(canvas);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
console.log(`\nAffected image: ${img}`);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
manifest.addSequence(sequence);
|
manifest.addSequence(sequence);
|
||||||
|
Loading…
Reference in New Issue
Block a user