您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add All Steam App in your wishlist.
- // ==UserScript==
- // @name Steam Auto Wishlist
- // @namespace https://greasyfork.org/users/191481
- // @version 0.31
- // @description Add All Steam App in your wishlist.
- // @author Zeper
- // @match https://store.steampowered.com/news
- // @grant GM_xmlhttpRequest
- // ==/UserScript==
- var IsDebug = true;
- var xhr = new XMLHttpRequest();
- var AppList = [];
- var WishList = [];
- var LastAppAdded = 0;
- var LastAppFail = 0;
- var AppListIndex = 0;
- var ErrorCount = 0;
- var RetryOverError = 1; // At least 1 if you don't want to break the script
- var NetErrorCount = 0;
- var RetryOverNetError = 3; // At least 1 if you don't want to break the script
- var Loop = 0;
- var timestamp = 0;
- var minDelay = 2000; // min delay between each request in millisecond, to not spam steam server if you have a good internet connection
- function FindIndexByAppID(value){
- return value == this;
- }
- function arr_diff (a1, a2) {
- var a = [], diff = [];
- for (var i = 0; i < a1.length; i++) {
- a[a1[i]] = true;
- }
- for (var i = 0; i < a2.length; i++) {
- if (a[a2[i]]) {
- delete a[a2[i]];
- } else {
- a[a2[i]] = true;
- }
- }
- for (var k in a) {
- diff.push(k);
- }
- return diff;
- }
- function AddSucces( response ){
- var delay = 1;
- LastAppAdded = AppList[AppListIndex];
- console.log("App "+ LastAppAdded +" added to the whishlist !");
- localStorage.setItem("SCRIPT_WISHLIST_LAST_APP_ADDED", LastAppAdded);
- AppListIndex++;
- if (AppListIndex < AppList.length){
- if ((Date.now() - timestamp) < minDelay) {delay = minDelay}
- setTimeout(() => {AddAllAppToWishlist();}, delay);
- } else {
- console.log("All App added in the wishlist !");
- if (IsDebug){console.log("AppListIndex : "+AppListIndex);}
- if (Loop){location.reload();}
- }
- }
- function AddFailed( response , NetworkError = 0){
- var delay = 1;
- if (!NetworkError) {ErrorCount++;} else {NetErrorCount++;}
- LastAppFail = AppList[AppListIndex];
- console.log("Failed to add "+ LastAppFail +" to the whishlist ("+response+")");
- localStorage.setItem("SCRIPT_WISHLIST_LAST_APP_FAIL", LastAppFail);
- if ((ErrorCount >= RetryOverError) || (NetErrorCount >= RetryOverNetError || NetErrorCount === 0)) {
- ErrorCount = 0;
- NetErrorCount = 0;
- AppListIndex++;
- }
- if (AppListIndex < AppList.length){
- if ((Date.now() - timestamp) < minDelay) {delay = minDelay}
- setTimeout(() => {AddAllAppToWishlist();}, delay);
- } else {
- console.log("All App added in the wishlist !");
- if (IsDebug){console.log("AppListIndex : "+AppListIndex);}
- if (Loop){location.reload();}
- }
- }
- function AddAllAppToWishlist(){
- xhr.open('POST', "https://store.steampowered.com/api/addtowishlist", "true");
- xhr.setRequestHeader('X-Requested-With', "XMLHttpRequest");
- xhr.setRequestHeader('Content-Type', "application/x-www-form-urlencoded; charset=UTF-8");
- var data = "sessionid="+g_sessionID.toString()+"&appid="+AppList[AppListIndex].toString();
- xhr.send(data);
- timestamp = Date.now();
- xhr.onreadystatechange = function () {
- if (xhr.readyState == 4) {
- if(xhr.status == 200){
- var response = JSON.parse(xhr.responseText);
- if (IsDebug){console.log(response);}
- if (response.success){
- AddSucces(response.msg);
- } else {
- AddFailed(response.msg);
- }
- } else {
- AddFailed(xhr.status, 1);
- }
- }
- }
- }
- function LoadLastAppID(){
- if (localStorage.getItem("SCRIPT_WISHLIST_LAST_APP_ADDED")) {LastAppAdded = parseInt(localStorage.getItem("SCRIPT_WISHLIST_LAST_APP_ADDED"));console.log("LastAppAdded : "+LastAppAdded);}
- if (localStorage.getItem("SCRIPT_WISHLIST_LAST_APP_FAIL")) {LastAppFail = parseInt(localStorage.getItem("SCRIPT_WISHLIST_LAST_APP_FAIL"));console.log("LastAppFail : "+LastAppFail);}
- if ( LastAppFail && AppList.includes(LastAppFail) ) {console.log("Loading LastAppindex From LastAppFail...");AppListIndex = AppList.findIndex(FindIndexByAppID,LastAppFail);if (AppListIndex >= AppList.length-1 || AppListIndex < 0){AppListIndex = 0;console.log("AppListIndex is at the end (or OOB) of the Applist.\nReboot of AppListIndex...");}}
- AddAllAppToWishlist();
- }
- function GetWishList(){
- xhr.open('GET', "https://store.steampowered.com/dynamicstore/userdata", true);
- xhr.send();
- xhr.onreadystatechange = function () {
- if (xhr.readyState == 4) {
- if(xhr.status == 200){
- var response = JSON.parse(xhr.responseText);
- if (IsDebug){console.log(response);}
- if (response.rgWishlist){
- WishList = response.rgWishlist;
- if (IsDebug){console.log("Succes WishList:"+WishList);}
- AppList = arr_diff(AppList,WishList);
- if (IsDebug){console.log("App Not in Wish list:"+AppList);}
- LoadLastAppID();
- } else {
- console.log("Failed to get rgWishlist from the response");
- }
- } else {
- console.log("WishList request fail");
- }
- }
- }
- }
- GM_xmlhttpRequest ( {
- method: "GET",
- url: "https://api.steampowered.com/ISteamApps/GetAppList/v2",
- onreadystatechange : function (response) {
- if (response.readyState == 4 && response.status == 200) {
- var JSONresponse = JSON.parse(response.responseText);
- if (IsDebug){console.log(JSONresponse);}
- for (var i = 0; i < JSONresponse.applist.apps.length; i++){
- AppList.push(JSONresponse.applist.apps[i].appid);
- }
- AppList.sort(function(a, b) {return a - b;});
- if (IsDebug){console.log(AppList);}
- GetWishList();
- }
- }
- } );