Fusionnne les jobs node en un

This commit is contained in:
Simon
2023-05-16 20:20:26 +00:00
committed by Simon
parent e0c1ad7e03
commit 9d6ddf6e25
16 changed files with 1323 additions and 2121 deletions

72
src/build-manifest.js Normal file
View File

@@ -0,0 +1,72 @@
const fs = require("fs");
const path = require("path");
const iptc = require("node-iptc");
// find all images
const slug = process.env["PACKAGE_NAME"];
const root = process.env["ENTRY_FOLDER"];
let workingDirectory = path.join(root, slug);
// extract metadata from them
fs.readdir(workingDirectory, (err, files) => {
if (err) { throw err };
// construct a JSON file
let theme = new Object();
theme.dayImageList = [];
theme.nightImageList = [];
theme.sunsetImageList = [];
theme.sunriseImageList = [];
// iterate each files
files.filter(file => path.extname(file) == '.jpg').forEach(image => {
buffer = fs.readFileSync(path.join(workingDirectory, image));
// extract metadata
let metadata = iptc(buffer);
theme.imageFilename ||= metadata.special_instructions + "_*" + path.extname(image);
theme.imageCredits ||= metadata.copyright_notice;
theme.displayName ||= metadata.headline;
// explore categories to find if image is dayHighlight or nightHighlight
metadata.supplemental_categories?.forEach(cat => {
switch (cat) {
case "dayHighlight":
theme.dayHighlight ||= parseInt(metadata.original_transmission_reference);
break;
case "nightHighlight":
theme.nightHighlight ||= parseInt(metadata.original_transmission_reference);
break;
default:
break;
}
});
switch (metadata.category) {
case "day":
theme.dayImageList.push(parseInt(metadata.original_transmission_reference));
break;
case "night":
case "nig":
theme.nightImageList.push(parseInt(metadata.original_transmission_reference));
break;
case "sunset":
case "twilight":
case "twi":
theme.sunsetImageList.push(parseInt(metadata.original_transmission_reference));
break;
case "sunrise":
case "dawn":
case "daw":
theme.sunriseImageList.push(parseInt(metadata.original_transmission_reference));
break;
default:
break;
}
});
fs.writeFileSync(path.join(workingDirectory, 'theme.json'), JSON.stringify(theme));
});