download and inline fish icons

This commit is contained in:
insects 2025-02-11 16:24:58 +01:00
parent 36be313093
commit faa92fcc76
1021 changed files with 35 additions and 12 deletions

View file

@ -5,6 +5,11 @@
import { DATA } from "./data.js";
import { FISH_INFO } from "./fish_data.js";
import fs from "node:fs/promises";
import axios from "axios";
import PQueue from "p-queue";
import minimist from "minimist";
const argv = minimist(process.argv.slice(2));
const result = {
db_data: DATA,
@ -18,6 +23,25 @@ Object.values(result.db_data.FISH).forEach((fish) => {
}
});
if (argv.icons) {
let promises = Object.values(result.db_data.ITEMS).map((item) => async () => {
if (item.icon !== "") {
let url = `https://v2.xivapi.com/api/asset?path=ui/icon/${item.icon.toString().slice(0, 3)}000/${item.icon}.tex&format=png`;
let { data } = await axios.get(url, { responseType: "arraybuffer" });
let fileData = Buffer.from(data, "binary");
return fs.writeFile(`./static/icons/${item.icon}.png`, fileData);
} else {
return true;
}
});
console.log(`Downloading ${promises.length} icons...`);
const queue = new PQueue({ concurrency: 5 });
await queue.addAll(promises);
console.log("Download complete!");
}
const json = JSON.stringify(result);
await fs.writeFile("data.json", json, { encoding: "utf8" });
console.log("Saved JSON to data.json!");