fix cards drops bug
This commit is contained in:
@@ -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);
|
|
||||||
});
|
|
||||||
|
|||||||
Reference in New Issue
Block a user