"use strict"; const fs = require("fs"); const path = require("path"); const mimeType = require("mime-types"); const sizeOf = require("image-size"); const themePath = path.resolve(__dirname, "../assets/theme"); const themeList = {}; fs.readdirSync(themePath).forEach((theme) => { if (!(theme in themeList)) themeList[theme] = {}; const imgList = fs.readdirSync(path.resolve(themePath, theme)); imgList.forEach((img) => { const imgPath = path.resolve(themePath, theme, img); const name = path.parse(img).name; const { width, height } = sizeOf(imgPath); themeList[theme][name] = { width, height, data: convertToDatauri(imgPath), }; }); }); function convertToDatauri(path) { const mime = mimeType.lookup(path); const base64 = fs.readFileSync(path).toString("base64"); return `data:${mime};base64,${base64}`; } function getCountImage({ count, theme = "moebooru", length = 7 }) { if (!(theme in themeList)) theme = "moebooru"; // This is not the greatest way for generating an SVG but it'll do for now const countArray = count.toString().padStart(length, "0").split(""); let x = 0, y = 0; const parts = countArray.reduce((acc, next, index) => { const { width, height, data } = themeList[theme][next]; const image = `${acc} `; x += width; if (height > y) y = height; return image; }, ""); return ` Urushi Counter ${parts} `; } module.exports = { getCountImage, };