osrs-hiscores-parser
Version:
Package that parses and transforms Old School Runescape Hiscore API results into a JSON object.
37 lines (36 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parser = void 0;
const data_1 = require("./data");
/**
* @param usernames - rsn of the user or users
* @returns An array containing an object for each user
*/
async function parser(usernames) {
const combinedArr = data_1.skills.concat(data_1.misc);
const getRawUserData = async (username) => {
const response = await fetch(`https://cors-anywhere-apqk.onrender.com/https://secure.runescape.com/m=hiscore_oldschool/index_lite.ws?player=${username}`);
const rawUserData = await response.text();
return rawUserData;
};
const formatUserData = (rawData) => {
const player = [];
const arr = [];
rawData.toString().split("\n").filter(emptyItem => emptyItem).forEach((item) => {
arr.push(item.split(","));
});
arr.forEach((item, i) => {
player.push({
"name": combinedArr[i],
"rank": parseInt(item[0]),
...(player.length < 24 ? { "level": parseInt(item[1]) } : { "score": parseInt(item[1]) }),
...(item[2] !== undefined ? { "experience": parseInt(item[2]) } : {})
});
});
return player;
};
return await Promise.all(usernames.map(async (username) => {
return { name: username, data: formatUserData(await getRawUserData(username)) };
}));
}
exports.parser = parser;