Files
AthenaProfileGenerator/index.js
2025-01-03 17:28:06 +00:00

84 lines
2.6 KiB
JavaScript

const { default: request } = require("axios");
const fs = require("fs");
const path = require("path");
let athena = require("./athena_template.json");
const fixedBackendValues = {
"AthenaEmoji": "AthenaDance",
"AthenaSpray": "AthenaDance",
"AthenaToy": "AthenaDance",
"AthenaPetCarrier": "AthenaBackpack",
"AthenaPet": "AthenaBackpack",
"SparksDrum": "SparksDrums",
"SparksMic": "SparksMicrophone"
};
console.log("Fortnite Athena Profile Generator by Lawin v1.0.4\n");
request.get("https://fortnite-api.com/v2/cosmetics").then(resp => {
let data = resp.data.data;
console.log("[GEN] Starting to generate...");
for (let mode of Object.keys(data)) {
if ((mode == "lego") || (mode == "beans")) continue;
for (let item of data[mode]) {
if (item.id.toLowerCase().includes("random")) continue;
if (mode == "tracks") item.type = { "backendValue": "SparksSong" };
// Credits to PRO100KatYT for backendValue fixes
if (Object.keys(fixedBackendValues).includes(item.type.backendValue)) item.type.backendValue = fixedBackendValues[item.type.backendValue];
let id = `${item.type.backendValue}:${item.id}`;
let variants = [];
if (item.variants) {
for (let obj of item.variants) {
variants.push({
channel: (obj.channel) || "",
active: (obj.options?.[0]?.tag) || "",
owned: (obj.options?.map?.(variant => (variant?.tag || ""))) || ""
});
}
}
athena.items[id] = {
templateId: id,
attributes: {
max_level_bonus: 0,
level: 1,
item_seen: true,
xp: 0,
variants: variants,
favorite: false
},
quantity: 1
};
}
}
const athenaPath = path.join(__dirname, "athena.json");
fs.writeFileSync(athenaPath, JSON.stringify(athena, null, 2));
const stats = fs.statSync(athenaPath);
console.log(`[GEN] Successfully generated and saved into ${athenaPath} (${size(stats.size)})`);
});
function size(bytes) {
const sizes = ["Bytes", "KB", "MB", "GB", "TB"];
if (bytes == 0) {
return "N/A";
}
const i = Number(Math.floor(Math.log(bytes) / Math.log(1024)));
if (i == 0) {
return bytes + " " + sizes[i];
}
return (bytes / Math.pow(1024, i)).toFixed(1) + " " + sizes[i];
}