/* eslint-disable @typescript-eslint/no-var-requires */ const https = require("https"); const fs = require("fs").promises; const path = require("path"); const key = process.argv[2]; function getRawJSON() { return new Promise((resolve, reject) => { const options = { hostname: "api.steampowered.com", port: 443, path: `/ISteamUserStats/GetSchemaForGame/v0002/?appid=1812820&key=${key}`, method: "GET", headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0", Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", }, }; let data = []; const req = https.request(options, (res) => { console.log(`statusCode: ${res.statusCode}`); res.on("data", (chunk) => { data.push(chunk); }); res.on("end", () => { console.log("Response ended: "); resolve(Buffer.concat(data).toString()); }); }); req.on("error", (error) => { console.error(error); req.end(); reject(error); }); req.end(); }); } async function fetchAchievementsData() { const raw = await getRawJSON(); const o = JSON.parse(raw); const achievements = {}; o.game.availableGameStats.achievements.forEach((a) => { achievements[a.name] = { ID: a.name, Name: a.displayName, Description: a.description, }; }); const data = { note: "***** Generated from a script, overwritten by steam achievements data *****", fetchedOn: new Date().getTime(), achievements, }; const jsonPath = path.resolve(__dirname, "../src/Achievements/AchievementData.json"); await fs.writeFile(jsonPath, JSON.stringify(data, null, 2)); return data; } fetchAchievementsData().then((json) => console.log(JSON.stringify(json, null, 2)));