// ==UserScript== // @author Deniss Dubinin // @name Steam Queue Auto Discover // @description Automatic queue discoverer for 3 Steam Sale cards getting // @version 1.0.0 // @namespace https://raw.githubusercontent.com/denissdubinin/Steam-Queue-Auto-Discover // @updateURL https://raw.githubusercontent.com/denissdubinin/Steam-Queue-Auto-Discover/master/queue.user.js // @supportURL https://github.com/denissdubinin/Steam-Queue-Auto-Discover/issues // @icon https://store.steampowered.com/favicon.ico // @match https://store.steampowered.com/explore // ==/UserScript== (function(window) { 'use strict'; const SESSION_ID = g_sessionID; const GENERATE_QUEUE_URL = 'https://store.steampowered.com/explore/generatenewdiscoveryqueue'; const QUEUE_ITEM_URL = 'https://store.steampowered.com/app/'; const NEXT_QUEUE_URL = 'https://store.steampowered.com/explore/next/0/'; let queueItems = [], mainQueueIterator = 0, error = false, popup; class sendRequest { send(url, params, successCallback) { var urlParams; urlParams = Object.keys(params).map( function(param) { return encodeURIComponent(param) + '=' + encodeURIComponent(params[param]) } ).join('&'); var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); xhr.open('POST', url); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { switch (xhr.status) { case 200: error = false; if (successCallback !== undefined && successCallback !== null ) { successCallback(xhr.response); } break; default: error = true; generateNewQueue(); break; } } } xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); xhr.send(urlParams); return xhr; } } let sendRequestClass = new sendRequest(); function generateNewQueue() { if (popup !== undefined) { popup.Dismiss(); } if (mainQueueIterator < 3) { let popupContext = ''; if (error) { popupContext = `Error happened. Discovering queue #${mainQueueIterator + 1}`; } else { popupContext = `Discovering queue #${mainQueueIterator + 1}`; } popup = ShowBlockingWaitDialog( 'Queue autodiscover', popupContext ); sendRequestClass.send( GENERATE_QUEUE_URL, { sessionid: SESSION_ID, queuetype: 0, snr: '1_5_9__discovery-queue-0' }, generateQueueCallback ); mainQueueIterator++; } else { let button = '' + 'Reload The Page' + '', popup = ShowBlockingWaitDialog( 'Queue autodiscover', 'Autodiscover finished. ' + button ); } } function generateQueueCallback(response) { if (response === undefined || JSON.parse(response).queue === undefined ) { return; } var i, length, callback = null, queueItems = JSON.parse(response).queue; for (i = 0, length = queueItems.length; i < length; ++i) { if (queueItems[i] === queueItems[length - 1]) { callback = function() { sendRequestClass.send( NEXT_QUEUE_URL, { appid_to_clear_from_queue: queueItems[i], sessionid: SESSION_ID, snr: '1_5_9__discovery-queue-0' }, generateNewQueue ); } } sendRequestClass.send( QUEUE_ITEM_URL + queueItems[i], { appid_to_clear_from_queue: queueItems[i], sessionid: SESSION_ID, }, callback ); callback = null; }; } generateNewQueue(); })(window);