diff --git a/src/build_job/package.json b/src/build_job/package.json index 2805d3b..40eeb97 100644 --- a/src/build_job/package.json +++ b/src/build_job/package.json @@ -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", diff --git a/src/build_job/themeset_builder.js b/src/build_job/themeset_builder.js index a111c54..5389aad 100644 --- a/src/build_job/themeset_builder.js +++ b/src/build_job/themeset_builder.js @@ -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) -}); \ No newline at end of file +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)); +}); + + + +