Steam自动探索队列(改)

Steam节庆活动用脚本,自动探索3次队列。改进:每天只执行一次,并添加手动执行选项。

// ==UserScript==
// @name         Steam自动探索队列(改)
// @namespace    https://keylol.com/t157861-1-1
// @version      0.1
// @description  Steam节庆活动用脚本,自动探索3次队列。改进:每天只执行一次,并添加手动执行选项。
// @author       baodongsun
// @contributor  Elm Forest
// @match        https://store.steampowered.com/
// @grant        GM_registerMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==

(function() {
    'use strict';
    const today = new Date().toISOString().split('T')[0];
    const lastRunDate = GM_getValue('steamAutoExploreLastRunDate', '');

    function runScript() {
        (function _exec(){
            var appids,
                running = true,
                queueNumber,
                progressDialog = ShowAlertDialog('探索中', $J('<div/>').append($J('<div/>', {'class': 'waiting_dialog_throbber'}) ).append( $J('<div/>', {'id': 'progressContainer'}).text('获取进度...') ), '停止').done(abort);

            function abort(){
                running = false;
                progressDialog.Dismiss();
            }

            function retry(){
                abort();
                ShowConfirmDialog('错误', '是否重试?', '重试', '放弃').done(_exec)
            }

            function clearApp(){
                if(!running)
                    return;
                showProgress();
                var appid = appids.shift();
                !appid ? generateQueue() : $J.post( appids.length ? '/app/' + appid : '/explore/next/', {sessionid: g_sessionID, appid_to_clear_from_queue: appid} ).done(clearApp).fail(retry);
            }

            function generateQueue(){
                running && $J.post('/explore/generatenewdiscoveryqueue', {sessionid: g_sessionID, queuetype: 0}).done(beginQueue).fail(retry);
            }

            function beginQueue(){
                if(!running)
                    return;
                $J.get('/explore/').done(function(htmlText){
                    var cardInfo = htmlText.match(/<div class="subtext">\D+(\d)\D+<\/div>/);
                    if( !cardInfo ){
                        abort();
                        ShowAlertDialog('完成','已完成全部3轮探索队列');
                        return;
                    }
                    var matchedAppids = htmlText.match(/0,\s+(\[.*\])/);
                    if( !matchedAppids ){
                        retry();
                        return;
                    }
                    appids = JSON.parse(matchedAppids[1]);
                    queueNumber = cardInfo[1];
                    appids.length == 0 ? generateQueue() : clearApp();
                    showProgress();
                })
            }

            function showProgress(){
                $J('#progressContainer').html( '<br>剩余' + queueNumber + '个待探索队列, 当前队列剩余' + appids.length + '个待探索游戏' );
            }

            beginQueue();
        }());
    }

    // 如果今天已经执行过,则不再执行
    if (lastRunDate !== today) {
        GM_setValue('steamAutoExploreLastRunDate', today);
        runScript();
    } else {
        console.log('今天已经执行过脚本');
    }

    // 注册(不可用)手动执行选项
    GM_registerMenuCommand('手动执行 Steam 自动探索队列', () => {
        GM_setValue('steamAutoExploreLastRunDate', today);
        runScript();
    });

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址