您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically sync your steam profile (every set period), when visiting steamgifts.com and/or marking your winning(s) as received. Now will also hide owned DLC.
// ==UserScript== // @name SteamGifts - Better Steam Profile Autosync // @namespace https://greasyfork.org/users/13642 // @version 4.0.1 // @description Automatically sync your steam profile (every set period), when visiting steamgifts.com and/or marking your winning(s) as received. Now will also hide owned DLC. // @author Royalgamer06 // @include *steamgifts.com* // @grant GM_xmlhttpRequest // @connect store.steampowered.com // @connect royalgamer06.ga // @require http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.js // ==/UserScript== // ==Configuration== const syncDelay = 86400000; // Sync every 86400000 = 24 * 60 * 60 * 1000 = 24 hours / 43200000 = 12 hours / 3600000 = 1 hour / 600000 = 10 mins. const syncOnReceived = true; // Sync when marking a won steam key as received? Yes = true, no = false. // ==/Configuration== // ==Code== this.$ = this.jQuery = jQuery.noConflict(true); $(document).ready(function() { const lastSyncDate = parseInt(localStorage.getItem("lastSyncDate")) || 1; if (Date.now() - lastSyncDate > syncDelay) { setTimeout(doSync, 0); } else if (location.href.indexOf("/giveaways/won") > -1 && syncOnReceived) { $(".table__gift-feedback-awaiting-reply").click(doSync); } }); function doSync() { var xsrfToken = $(".js__logout").data("form").split("xsrf_token=")[1]; if (xsrfToken.length > 0) { var data = "xsrf_token=" + xsrfToken + "&do=sync"; var prevHidden = localStorage.getItem("prevHidden"); var v = parseInt(localStorage.getItem("v")) || 2; if (!prevHidden) { prevHidden = []; localStorage.setItem("prevHidden", prevHidden.join(",")); } else { prevHidden = prevHidden.split(","); } $.ajax({ url: "/ajax.php", type: "POST", dataType: "json", data: data, success: function() { console.log("Native sync on SteamGifts completed"); } }); console.log("Adding owned games and DLC to Hidden Giveaways..."); console.log("Already hidden:", prevHidden); console.log("Gathering owned Steam AppID's..."); v++; localStorage.setItem("v", v); GM_xmlhttpRequest({ method: "GET", ignoreCache: true, url: "http://store.steampowered.com/dynamicstore/userdata/?v=" + v, onload: function(response) { const ownedApps = JSON.parse(response.responseText).rgOwnedApps; console.log("Successfully gathered owned Steam AppID's:", ownedApps); console.log("Hiding not yet hidden owned games and DLC..."); GM_xmlhttpRequest({ method: "GET", url: "https://royalgamer06.ga/sgdb.json", ignoreCache: true, onload: function(response) { const sgdb = JSON.parse(response.responseText); const appsToHide = ownedApps.filter(appid => sgdb.appids.hasOwnProperty(appid) && !prevHidden.includes(appid.toString())); if (appsToHide.length > 0) { var ajaxDone = 0; appsToHide.forEach(function(a) { let appid = a; console.log("Hiding AppID " + appid + "..."); $.post("/ajax.php", { xsrf_token: xsrfToken , game_id: sgdb.appids[appid], do: "hide_giveaways_by_game_id" }, function() { ajaxDone++; prevHidden.push(appid); localStorage.setItem("prevHidden", prevHidden.join(",")); console.log("Successfully added AppID " + appid + " to Hidden Giveaways!"); if (ajaxDone === appsToHide.length) { localStorage.setItem("lastSyncDate", Date.now()); console.log("All done! Successfully added " + ajaxDone + " games to Hidden Giveaways!"); } }); }); } else { console.log("No games needs to be hidden! All done! :)"); } } }); } }); } else { console.log("Unable to synchronize: missing user token."); } } // ==/Code==