Здравствуйте!
После счетных попыток разобратся в чем причина не работоспособности скрипта решил обратится к большому обществу специалистов за помощью. Речь о скрипте с GitHub для фарма(выбивания) карточек с игр который давно не поддерживается(в случае решения проблемы сделаю пулл реквест, может приймут).
Суть проблемы в том, что скрипт проверяет только первую страницу по ссылке http://steamcommunity.com/my/badges/ в поисках игр в которых еще есть карточки для фарма и если он таких не находит, то должен переходит на следующую страницу и искать там и т.д. до последней собирая все данные вместе и запускать идлинг, но он этого не делает.
Мне кажется проблема в этой фунции начиная со строки #290, а точнее в кострукции if(totalDropsLeft == 0) {...} #348 , где выполняется инкремент g_Page++ для перехода по страницам.
function checkCardApps() {
if(g_CheckTimer) {
clearTimeout(g_CheckTimer);
}
log("Checking card drops...");
client.webLogOn();
client.once('webSession', function(sessionID, cookies) {
cookies.forEach(function(cookie) {
g_Jar.setCookie(cookie, 'https://steamcommunity.com');
});
request("https://steamcommunity.com/my/badges/?p="+g_Page, function(err, response, body) {
if(err || response.statusCode != 200) {
log("Couldn't request badge page: " + (err || "HTTP error " + response.statusCode));
checkCardsInSeconds(30);
return;
}
var appsWithDrops = 0;
var totalDropsLeft = 0;
var appLaunched = false;
var $ = Cheerio.load(body);
var infolines = $('.progress_info_bold');
for(var i = 0; i < infolines.length; i++) {
var match = $(infolines[i]).text().match(/(\d+) card drops? remaining/);
var href = $(infolines[i]).closest('.badge_row').find('.badge_title_playgame a').attr('href');
if(!href) {
continue;
}
var urlparts = href.split('/');
var appid = parseInt(urlparts[urlparts.length - 1], 10);
if(!match || !parseInt(match[1], 10) || g_OwnedApps.indexOf(appid) == -1) {
continue;
}
appsWithDrops++;
totalDropsLeft += parseInt(match[1], 10);
if(!appLaunched) {
appLaunched = true;
var title = $(infolines[i]).closest('.badge_row').find('.badge_title');
title.find('.badge_view_details').remove();
title = title.text().trim();
log("Idling app " + appid + " \"" + title + "\" - " + match[1] + " drop" + (match[1] == 1 ? '' : 's') + " remaining");
client.gamesPlayed(parseInt(appid, 10));
}
}
log(totalDropsLeft + " card drop" + (totalDropsLeft == 1 ? '' : 's') + " remaining across " + appsWithDrops + " app" + (appsWithDrops == 1 ? '' : 's') + " (Page " + g_Page + ")");
if(totalDropsLeft == 0) {
if ($('.badge_row').length == 150)){
log("No drops remaining on page "+g_Page);
g_Page++;
log("Checking page "+g_Page);
checkMinPlaytime();
} else {
log("All card drops recieved!");
log("Shutting Down.")
shutdown(0);
}
} else {
checkCardsInSeconds(1200); // 20 minutes to be safe, we should automatically check when Steam notifies us that we got a new item anyway
}
});
});
Что делал: Смотрел не изменились ли классы в исходном коде страницы, которые используются в скрипте. Вроде все на месте.
Спасибо за помощь и поддержку забытых, но полезных проектов.
Виртуальный выделенный сервер (VDS) становится отличным выбором
В проекте использую скрипт для определения старых версий браузеров, который открывает модальное окно с предложением скачать браузер последней...
Вот при таком выполнение сначала должен показаться первый параграф на странице, потом выполнится скрипт, и только потом покажется последний...