fix cards drops bug

This commit is contained in:
2023-01-04 23:16:07 +03:00
parent c4249a0700
commit 8f4b8b0ebc
+25 -23
View File
@@ -1,13 +1,13 @@
/** /**
* Скрипт для парсинга значков Steam * Скрипт для парсинга значков Steam
* @version 0.1.0 * @version 1.0.0
* @license Unlicense * @license Unlicense
* @author Alexander Popov <iiiypuk@fastmail.fm> * @author Alexander Popov <iiiypuk@fastmail.fm>
*/ */
/** /**
* Получает данные из элемента `div.badge_row` * Получает данные из элемента `div.badge_row`
* @param {Array} value - div.badge_row. * @param {Array} value - div.badge_row
* @returns {Object} * @returns {Object}
*/ */
function getData(value) { function getData(value) {
@@ -22,23 +22,26 @@ function getData(value) {
// check left cards // check left cards
// для металлических карточек нет параметра 'карточек выпадет' // для металлических карточек нет параметра 'карточек выпадет'
let cardsDropLeft = 0; let cardsDropLeft = 0;
if (value[1].getElementsByClassName('progress_info_bold')[0]) { if (value[1].getElementsByClassName('progress_info_bold').length > 0) {
cardsDropLeft = value[1].getElementsByClassName('progress_info_bold')[0].match(/\d/g); cardsDropsNumber = value[1].getElementsByClassName('progress_info_bold')[0].innerText.match(/\d/g);
if (cardsDropsNumber !== null) { cardsDropLeft = [0]; }
} }
let badgeItem = { let badgeItem = {
id: value[1].childNodes[1].href.split('/')[6], id: parseInt(value[1].childNodes[1].href.split('/')[6]),
uri: value[1].childNodes[1].href, uri: value[1].childNodes[1].href,
name: value[1].childNodes[3].childNodes[1].childNodes[3].childNodes[0].nodeValue.replace(/[\r\n\t]/g, ''), // name: value[1].childNodes[3].childNodes[1].childNodes[3].childNodes[0].nodeValue.trim().replace(/[\r\n\t]/g, ''),
dropLeft: cardsDropLeft, dropLeft: parseInt(cardsDropLeft),
}; };
// console.log(`${badgeItem.name} :: ${badgeItem.dropLeft}`);
return badgeItem; return badgeItem;
} }
/** /**
* Преобразовывает массив данных в JSON и возвращает к консоль * Преобразовывает массив данных в JSON и возвращает к консоль
* @param {Array} badgesArray - массив данных о значках. * @param {Array} badgesArray - массив данных о значках
*/ */
function exportJson(badgesArray) { function exportJson(badgesArray) {
console.log(JSON.stringify(badgesArray)); console.log(JSON.stringify(badgesArray));
@@ -47,7 +50,7 @@ function exportJson(badgesArray) {
/** /**
* Функция main() * Функция main()
*/ */
function getBadges(page, pages) { function getBadges() {
let badges = []; let badges = [];
let currentPage = 1; let currentPage = 1;
@@ -62,24 +65,23 @@ function getBadges(page, pages) {
while (currentPage <= totalPages) { while (currentPage <= totalPages) {
console.log(`Parse ${currentPage} page...`); console.log(`Parse ${currentPage} page...`);
const collection = document.getElementsByClassName('badge_row'); fetch(`${baseURI}?p=${currentPage}`)
.then((response) => { return response.text(); })
.then((html) => {
let parser = new DOMParser();
let doc = parser.parseFromString(html, 'text/html');
const collection = doc.getElementsByClassName('badge_row');
for (const value of Object.entries(collection)) { for (const value of Object.entries(collection)) {
badges.push(getData(value)); badges.push(getData(value));
} }
})
.catch((err) => console.warn('Something went wrong.', err));
currentPage++; currentPage++;
if (currentPage <= totalPages) {
document.location.href = `${baseURI}?p=${currentPage}`;
}
} }
exportJson(badges); setTimeout(() => { exportJson(badges); }, 10000);
} }
window.addEventListener('load', function() { getBadges();
getBadges(1);
});