mirror of
https://gitlab.com/Thoscellen/Wallset.git
synced 2025-05-31 19:04:51 +02:00
Ecriture du générateur de manifeste
Fonctionne en local avec le jeu de test valide, mais à besoin d'être ajuster avec: - Caster les nombres qui sont encore en string - Fluidifier l'execution dans le dossier de travail car le module n'est pas à la racine du projet - Améliorer le debugage local tant via npm que via VSCode (Pourquoi le dossier de travail doit être au niveau du package.json?, j'ai besoin de plus de connaissance) - Voir pour mieux paralléliser l'extraction des données (boucle forEach séquentiel, je pourrais tirer partie d'un Yield ou Async Await)
This commit is contained in:
parent
b349fe729a
commit
774b52e3e8
@ -4,7 +4,7 @@
|
||||
"description": "Generate a theme.json file from the images' metadata of the working folder.",
|
||||
"main": "themeset_builder.js",
|
||||
"scripts": {
|
||||
"test": "node themeset_builder.js"
|
||||
"start": "node themeset_builder.js"
|
||||
},
|
||||
"author": "Simon",
|
||||
"license": "ISC",
|
||||
|
@ -7,11 +7,69 @@ const iptc = require('node-iptc');
|
||||
// find all images
|
||||
const slug = env.PACKAGE_NAME || "valid_set";
|
||||
const root = env.ENTRY_FOLDER || "test";
|
||||
let file = path.join(root, slug, "bl2_eridum_badlands_1.jpg");
|
||||
let workingDirectory = path.join("../..", root, slug);
|
||||
|
||||
// extract metadata from them
|
||||
fs.readFile(file, function (err, data) {
|
||||
if (err) { throw err }
|
||||
var iptc_data = iptc(data);
|
||||
console.log(iptc_data)
|
||||
});
|
||||
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));
|
||||
//if (err) { throw err };
|
||||
// extract metadata
|
||||
let metadata = iptc(buffer);
|
||||
// fill object
|
||||
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 ||= metadata.original_transmission_reference;
|
||||
break;
|
||||
case "nightHighlight":
|
||||
theme.nightHighlight ||= metadata.original_transmission_reference;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
switch (metadata.category) {
|
||||
case "day":
|
||||
theme.dayImageList.push(metadata.original_transmission_reference);
|
||||
break;
|
||||
case "night":
|
||||
case "nig":
|
||||
theme.nightImageList.push(metadata.original_transmission_reference);
|
||||
break;
|
||||
case "sunset":
|
||||
case "twilight":
|
||||
case "twi":
|
||||
theme.sunsetImageList.push(metadata.original_transmission_reference);
|
||||
break;
|
||||
case "sunrise":
|
||||
case "dawn":
|
||||
case "daw":
|
||||
theme.sunriseImageList.push(metadata.original_transmission_reference);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
fs.writeFileSync(path.join(workingDirectory, 'theme.json'), JSON.stringify(theme));
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user