62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
/**
|
||
* Скрипт для парсинга значков Steam
|
||
* @version 0.1.0
|
||
* @license Unlicense
|
||
* @author Alexander Popov <iiiypuk@fastmail.fm>
|
||
*/
|
||
|
||
/**
|
||
* Получает данные из элемента `div.badge_row`
|
||
* @param {DOM} value - div.badge_row.
|
||
* @returns {Object}
|
||
*/
|
||
function getData(value) {
|
||
/*
|
||
* Badge Sctruct:
|
||
* id: int
|
||
* uri: str
|
||
* name: str
|
||
* dropLeft: int
|
||
*/
|
||
|
||
// check left cards
|
||
// для металлических карточек нет параметра 'карточек выпадет'
|
||
let cardsDropLeft = 0;
|
||
if (value.getElementsByClassName('progress_info_bold')[0]) {
|
||
cardsDropLeft = value.getElementsByClassName('progress_info_bold')[0].match(/\d/g);
|
||
}
|
||
|
||
let badgeItem = {
|
||
id: value.childNodes[1].href.split('/')[6],
|
||
uri: value.childNodes[1].href,
|
||
name: value.childNodes[3].childNodes[1].childNodes[3].childNodes[0].nodeValue.replace(/[\r\n\t]/g, ''),
|
||
dropLeft: cardsDropLeft,
|
||
};
|
||
|
||
return badgeItem;
|
||
}
|
||
|
||
/**
|
||
* Преобразовывает массив данных в JSON и возвращает к консоль
|
||
* @param {Array} badgesArray - массив данных о значках.
|
||
*/
|
||
function exportJson(badgesArray) {
|
||
console.log(JSON.stringify(badgesArray));
|
||
}
|
||
|
||
/**
|
||
* Функция main()
|
||
*/
|
||
function getBadges() {
|
||
let badges = [];
|
||
const collection = document.getElementsByClassName('badge_row');
|
||
|
||
for (const value of Object.entries(collection)) {
|
||
badges.push(getData(value));
|
||
}
|
||
|
||
exportJson(badges);
|
||
}
|
||
|
||
getBadges();
|