const fs = require("fs"); const path = require("path"); const Prisma = require("@prisma/client"); const prisma = new Prisma.PrismaClient(); console.log("processing new border images"); const cwd = process.cwd(); const folder = path.join( cwd, cwd.includes("util") ? ".." : "", "public/images" ); const list = fs.readdirSync(folder); let catalogue = async () => { let numAdded = 0; for (let item of list) { // console.log(item); const result = await prisma.borderImage.findFirst({ where: { imageName: item, }, }); if (!result && item == "default.png") { const added = await prisma.borderImage.create({ data: { id: 0, imageName: item, borderName: "Default", }, }); numAdded++; console.log(added); } else if (!result) { const added = await prisma.borderImage.create({ data: { imageName: item, }, }); numAdded++; console.log(added); } } console.log(`Processed ${numAdded} new images.`); }; let download = async () => { const fetch = await import("node-fetch"); const filePath = path.join( cwd, cwd.includes("util") ? ".." : "", "util/border_data.json" ); const json_data = JSON.parse(fs.readFileSync(filePath)); let numAdded = 0; for (let value of json_data) { if (!value) continue; const filename_regex = /https:\/\/cdn.akamai.steamstatic.com\/steamcommunity\/public\/images\/items\/\d+\/(.+\.png)/gi; const filename = filename_regex.exec(value.borderURL)[1]; if (!list.includes(filename)) { console.log("N", filename); let data = await fetch.default(value.borderURL); data.body.pipe(fs.createWriteStream(path.join(folder, filename))); } const result = await prisma.borderImage.findFirst({ where: { imageName: filename, }, }); if (!result.appId || !result.appName || !result.borderName) { const added = await prisma.borderImage.upsert({ create: { imageName: filename, appId: value.appInfo.appid, appName: value.appInfo.name, borderName: value.name, }, update: { imageName: filename, appId: value.appInfo.appid, appName: value.appInfo.name, borderName: value.name, }, where: { imageName: filename, }, }); console.log(added); numAdded++; } } console.log(`Upserted ${numAdded} values.`); }; download().then(() => { catalogue().then(() => { console.log("done."); }); });