X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=info.js;fp=info.js;h=2d8382e0b0c8022eb8a7ee2a6903b39d0fd889ef;hb=8faa84d56730bd1fc35b10d3d29db424691e3af5;hp=95813b61af40d9a97b562590c674bc07e870e86a;hpb=8a0a187b31a3e0e9b9faed1369441576a2b1d103;p=local-nhentai.git diff --git a/info.js b/info.js index 95813b6..2d8382e 100644 --- a/info.js +++ b/info.js @@ -1,30 +1,34 @@ const fs = require("fs").promises +const criteriaKeys = ["tag", "group", "artist", "character", "parody"] module.exports.doujins = shortNames => fs.readdir(".", {encoding: "utf8", withFileTypes: true}) .then(doujins => doujins .map(dirent => fs.readFile(`${dirent.name}/metadata.json`) .then(data => JSON.parse(data.toString())) + .then(data => {data.title = dirent.name; return data}) .then(data => [dirent.name, data]) .catch(_ => []))) .then(promises => Promise.all(promises)) .then(doujins => doujins - .filter(([title, data]) => title && data) - .filter(([title, data]) => (title == data.title) == !shortNames)) + .filter(([title, data]) => title && data)) + //.filter(([title, data]) => (title == data.title) == !shortNames)) .then(doujins => Object.fromEntries(doujins)) -module.exports.tags = _ => { - const tags = {"*": []} +module.exports.criteria = _ => { + const criteria = Object.fromEntries(criteriaKeys.map(key => [key, {["*"]: []}])) return module.exports.doujins() .then(doujins => Object.values(doujins)) .then(doujins => doujins - .forEach(doujin => { - tags["*"].push(doujin.title) + .forEach(doujin => + criteriaKeys.forEach(crit => { + criteria[crit]["*"].push(doujin.title) - doujin.tag && doujin.tag.forEach(tag => { - tags[tag] = tags[tag] || [] - tags[tag].push(doujin.title) + doujin[crit] && doujin[crit].forEach(val => { + criteria[crit][val] = criteria[crit][val] || [] + criteria[crit][val].push(doujin.title) + }) }) - })) - .then(_ => tags) + )) + .then(_ => criteria) }