Помогите подправить скрипт

297
30 августа 2017, 17:48

Здравствуйте!

После счетных попыток разобратся в чем причина не работоспособности скрипта решил обратится к большому обществу специалистов за помощью. Речь о скрипте с 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
        }
    });
});

Что делал: Смотрел не изменились ли классы в исходном коде страницы, которые используются в скрипте. Вроде все на месте.

Спасибо за помощь и поддержку забытых, но полезных проектов.

READ ALSO
ссылка на скрытый div vue js

ссылка на скрытый div vue js

Eсть большой div, который имеет как видимый блок

352
Запретить повторное открытие модального окна на сайте

Запретить повторное открытие модального окна на сайте

В проекте использую скрипт для определения старых версий браузеров, который открывает модальное окно с предложением скачать браузер последней...

443
Порядок выполнения скрипта

Порядок выполнения скрипта

Вот при таком выполнение сначала должен показаться первый параграф на странице, потом выполнится скрипт, и только потом покажется последний...

298