1 const fs = require("fs").promises
3 module.exports.doujins = shortNames => fs.readdir(".", {encoding: "utf8", withFileTypes: true})
4 .then(doujins => doujins
5 .map(dirent => fs.readFile(`${dirent.name}/metadata.json`)
6 .then(data => JSON.parse(data.toString()))
7 .then(data => [dirent.name, data])
9 .then(promises => Promise.all(promises))
10 .then(doujins => doujins
11 .filter(([title, data]) => title && data)
12 .filter(([title, data]) => (title == data.title) == !shortNames))
13 .then(doujins => Object.fromEntries(doujins))
15 module.exports.tags = _ => {
16 const tags = {"*": []}
18 return module.exports.doujins()
19 .then(doujins => Object.values(doujins))
20 .then(doujins => doujins
22 tags["*"].push(doujin.title)
24 doujin.tag && doujin.tag.forEach(tag => {
25 tags[tag] = tags[tag] || []
26 tags[tag].push(doujin.title)