// ==UserScript== // @name Steam自动探索队列 // @namespace http://steamcn.com/t157861-1-1 // @version 0.2 // @description Steam节庆活动用脚本,自动探索3次队列。 // @author baodongsun // @match https://store.steampowered.com/ // @grant SteamCN // @downloadURL https://update.greasyfork.cloud/scripts/369701/Steam%E8%87%AA%E5%8A%A8%E6%8E%A2%E7%B4%A2%E9%98%9F%E5%88%97.user.js // @updateURL https://update.greasyfork.cloud/scripts/369701/Steam%E8%87%AA%E5%8A%A8%E6%8E%A2%E7%B4%A2%E9%98%9F%E5%88%97.meta.js // ==/UserScript== (function() { 'use strict'; // Your code here... })();(function _exec(){ var appids, running = true, queueNumber, progressDialog = ShowAlertDialog('探索中', $J('
').append($J('
', {'class': 'waiting_dialog_throbber'}) ).append( $J('
', {'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(/
\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( '
剩余' + queueNumber + '个待探索队列, 当前队列剩余' + appids.length + '个待探索游戏' ); } beginQueue(); }())