/* 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)));