From 9423ce15196ecad8e04bb90fd059c0148f837e81 Mon Sep 17 00:00:00 2001 From: Lawin <56766256+Lawin0129@users.noreply.github.com> Date: Fri, 3 Jan 2025 17:28:06 +0000 Subject: [PATCH] Fix & some changes --- index.js | 73 ++++++++++++++++++++++++----------------------- package-lock.json | 36 ++++++++++++----------- package.json | 4 +-- 3 files changed, 59 insertions(+), 54 deletions(-) diff --git a/index.js b/index.js index e83adc8..9ab3087 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,6 @@ const { default: request } = require("axios"); const fs = require("fs"); +const path = require("path"); let athena = require("./athena_template.json"); const fixedBackendValues = { @@ -10,71 +11,73 @@ const fixedBackendValues = { "AthenaPet": "AthenaBackpack", "SparksDrum": "SparksDrums", "SparksMic": "SparksMicrophone" -} +}; -console.log("Fortnite Athena Profile Generator by Lawin v1.0.3\n"); +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...\n"); + console.log("[GEN] Starting to generate..."); - for (var mode in data) { - if (mode == "lego") continue; // Adding lego characters to the profile is unnecessary + for (let mode of Object.keys(data)) { + if ((mode == "lego") || (mode == "beans")) continue; - data[mode].forEach(item => { - if (item.id.toLowerCase().includes("random")) return; + for (let item of data[mode]) { + if (item.id.toLowerCase().includes("random")) continue; - if (mode == "tracks") item.type = {"backendValue": "SparksSong"}; + if (mode == "tracks") item.type = { "backendValue": "SparksSong" }; // Credits to PRO100KatYT for backendValue fixes - if (fixedBackendValues.hasOwnProperty(item.type.backendValue)) item.type.backendValue = fixedBackendValues[item.type.backendValue]; + 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) { - item.variants.forEach(obj => { + for (let obj of item.variants) { variants.push({ - "channel": obj.channel || "", - "active": obj.options[0].tag || "", - "owned": obj.options.map(variant => variant.tag || "") - }) - }) + 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 + templateId: id, + attributes: { + max_level_bonus: 0, + level: 1, + item_seen: true, + xp: 0, + variants: variants, + favorite: false }, - "quantity": 1 - } - }) + quantity: 1 + }; + } } - fs.writeFileSync("./athena.json", JSON.stringify(athena, null, 2)); - const stats = fs.statSync("./athena.json"); + const athenaPath = path.join(__dirname, "athena.json"); - console.log("[GEN] Successfully generated and saved into", `${__dirname}\\athena.json`, `(${size(stats.size)})`); -}) + 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"] + const sizes = ["Bytes", "KB", "MB", "GB", "TB"]; if (bytes == 0) { - return "N/A" + return "N/A"; } - const i = Number(Math.floor(Math.log(bytes) / Math.log(1024))) + const i = Number(Math.floor(Math.log(bytes) / Math.log(1024))); if (i == 0) { - return bytes + " " + sizes[i] + return bytes + " " + sizes[i]; } - return (bytes / Math.pow(1024, i)).toFixed(1) + " " + sizes[i] + return (bytes / Math.pow(1024, i)).toFixed(1) + " " + sizes[i]; } diff --git a/package-lock.json b/package-lock.json index 4a1e3e8..8052f9e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "athenaprofilegenerator", - "version": "1.0.2", + "version": "1.0.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "athenaprofilegenerator", - "version": "1.0.2", + "version": "1.0.4", "license": "GPL-3.0", "dependencies": { - "axios": "^1.3.3" + "axios": "^1.7.9" } }, "node_modules/asynckit": { @@ -18,11 +18,12 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", - "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -47,15 +48,16 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -110,11 +112,11 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "axios": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", - "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "requires": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -133,9 +135,9 @@ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" }, "form-data": { "version": "4.0.0", diff --git a/package.json b/package.json index ce4ed4b..17e2ba4 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "name": "athenaprofilegenerator", - "version": "1.0.2", + "version": "1.0.4", "description": "A fortnite athena profile generator made for fortnite backends (LawinServer, etc...)", "main": "index.js", "dependencies": { - "axios": "^1.3.3" + "axios": "^1.7.9" }, "scripts": { "start": "node index.js",