import { Data } from "../components/index.js"; import lodash from "lodash"; import fs from "fs"; import request from "request"; const _root = process.cwd() + "/plugins/miao-plugin/"; const _cRoot = _root + "resources/meta/character/"; let readDir = fs.readdirSync(_cRoot); console.log(readDir); let imgs = []; function img(char, url, target) { imgs.push({ url, file: `${char.name}/${target}` }) } lodash.forEach(readDir, (c) => { console.log(c); if (!fs.existsSync(`${_cRoot}/${c}/data.json`)) { return; } let char = Data.readJSON(`${_cRoot}/${c}/`, 'data.json'); if (char.name) { let nameMap = { dori: "多莉", tighnari: "提纳里", collei: "柯莱" } if (!lodash.values(nameMap).includes(char.name)) { return; } // 正面 // 角色条 img(char, char.imgs.profile, "profile.png"); // 名片 img(char, char.imgs.party, "party.png"); // img(char, char.imgs.char, "char.png"); // 立绘-竖版 img(char, char.imgs.gacha_card, "gacha_card.png"); // 立绘 img(char, char.imgs.gacha_splash, "gacha_splash.png"); // 正面像 img(char, char.imgs.face, "face.png"); img(char, char.imgs.side, "face.png"); // 天赋 if (char.talent) { img(char, char.talent.a.icon, "talent_a.png"); img(char, char.talent.e.icon, "talent_e.png"); img(char, char.talent.q.icon, "talent_q.png"); } // 被动天赋 lodash.forEach(char.passive, (p, idx) => { img(char, p.icon, `passive_${idx}.png`); }); // 命座 lodash.forEach(char.cons, (con, idx) => { img(char, con.icon, `cons_${idx}.png`) }); } }) let cacheFile = async function () { let cacheFn = async function (file) { if (fs.existsSync(`${_cRoot}/${file.file}`)) { console.log(`已存在,跳过 ${file.file}`); return true; } try { let stream = fs.createWriteStream(`${_cRoot}/${file.file}`); await request("https://genshin.honeyhunterworld.com/" + file.url).pipe(stream); return new Promise((resolve) => { stream.on('finish', resolve) }); } catch (e) { return false; } console.log(`下载成功: ${file.file}`); return true; }; console.log('开始下载'); await Data.asyncPool(5, imgs, cacheFn); } await cacheFile(); console.log('下载成功');