Last active
April 25, 2020 12:46
-
-
Save Netrvin/bc6397a57ad5d735f8ee3a8e6c350d0c to your computer and use it in GitHub Desktop.
修改自 https://greasyfork.org/zh-CN/scripts/401598 内容:修复bug;每半天自动刷新
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Steam 免费游戏永久入库脚本 | |
// @namespace https://gist.github.com/Netrvin/bc6397a57ad5d735f8ee3a8e6c350d0c | |
// @version 0.2.1 | |
// @description steamdb.info屏蔽周末临时免费 Steam 免费游戏永久入库脚本 | |
// @author Boys&Netrvin | |
// @match *://steamdb.info/upcoming/free* | |
// @match *://store.steampowered.com/account/licenses* | |
// @icon https://steamdb.info/static/logos/512px.png | |
// @note 2020年4月22日 修复部分使用的问题 | |
// @grant GM_getValue | |
// @grant GM_setValue | |
// @run-at document-end | |
// ==/UserScript== | |
(function () { | |
'use strict'; | |
Array.prototype.notempty = function () { | |
let arr = []; | |
this.map(function (val, index) { | |
if (val !== "" && val != undefined) { | |
arr.push(val); | |
} | |
}); | |
return arr; | |
} | |
function load_licenses(res) { | |
if (typeof res == "undefined" || res == null || res.replace(/\s*/g, "") == "" || !res) return; | |
if (location.hostname !== 'store.steampowered.com') { | |
alert('Run this code on theSteamStore!'); | |
return; | |
} else if (typeof jQuery !== 'function') { | |
ShowAlertDialog('Fail', 'This page has no jQuery, try homepage.'); | |
return; | |
} else if (document.getElementById('header_notification_area') === null) { | |
ShowAlertDialog('Fail', 'You have to be logged in.'); | |
return; | |
} | |
let freePackages = res.replace(/\s*/g, "").split(",").notempty(); | |
let ownedPackages = {}; | |
jQuery('.account_table a').each(function (i, el) { | |
const match = el.href.match(/javascript:RemoveFreeLicense\( ([0-9]+), '/); | |
if (match !== null) { | |
ownedPackages[+match[1]] = true; | |
} | |
}); | |
let loaded = 0, | |
packages = 0, | |
total = freePackages.length, | |
modal = ShowBlockingWaitDialog('努力执行中...', '请耐心等待,如果有错误请无视,请耐心等待脚本加载完毕'); | |
for (let i = 0; i < total; i++) { | |
packages = freePackages[i]; | |
if (ownedPackages[packages]) { | |
loaded++; | |
continue; | |
} | |
jQuery.post('//store.steampowered.com/checkout/addfreelicense', { | |
action: 'add_to_cart', | |
sessionid: g_sessionID, | |
subid: packages | |
}).always(function () { | |
loaded++; | |
modal.Dismiss(); | |
if (loaded >= total) { | |
GM_setValue("steam_db_free_info_store_ok", true); | |
ShowAlertDialog('任务执行完成', '请刷新网页查看....'); | |
// location.reload(); | |
} else { | |
modal = ShowBlockingWaitDialog('执行中...', '加载至 <b>' + loaded + '</b>/' + total + '.'); | |
} | |
});//always-end | |
}//for-end | |
}//load_licenses-end | |
function flashing_prompt(count, time) { | |
let timeout | |
function clear() { | |
--count | |
if (count === 0) { | |
clearInterval(timeout) | |
timeout = null; | |
} | |
} | |
function exec() { | |
$("#dark-mode-toggle .dark-mode-slider").click() | |
clear(); | |
} | |
timeout = setInterval(() => { | |
exec(); | |
}, time) | |
}//flashing_prompt-end | |
let local = window.location.href; | |
if (local.indexOf("steamdb.info/upcoming/free") != -1) { | |
setTimeout(function(){ | |
window.location.reload(); | |
},43200000) | |
$("td").each(function () { | |
if ($(this).text() == "Weekend") $(this).parent().remove(); | |
}) | |
let v = ""; | |
$(".timeago:even").each(function (index, value, array) { | |
if ($(this).text().indexOf("ago") == -1) | |
return false; | |
else | |
v += $(this).parent().attr("data-subid") + ","; | |
}) | |
if (GM_getValue("steam_db_free_info_store_ok") != true) flashing_prompt(10, 500); | |
let oldValue = GM_getValue("steam_db_free_info_store") | |
if (oldValue === v) return; | |
let freePackages = v.replace(/\s*/g, "").split(",").notempty(); | |
if (freePackages.forEach(function (value, index, array) { | |
if (oldValue === "undefined" || oldValue == null) return false; | |
if (value === "undefined" || value == null) return false; | |
if (oldValue.indexOf(value) === -1) return false; | |
})) return; | |
GM_setValue("steam_db_free_info_store", v); | |
GM_setValue("steam_db_free_info_store_ok", false); | |
console.log("set steam_db_free_info_store=" + v); | |
console.log("set steam_db_free_info_store_ok=" + false); | |
return; | |
} | |
if (local.indexOf("store.steampowered.com/account/licenses") != -1) { | |
setTimeout(function(){ | |
window.location.reload(); | |
},43200000) | |
let v = GM_getValue("steam_db_free_info_store"); | |
console.log("get steam_db_free_info_store=" + v); | |
setTimeout(function () { | |
if (GM_getValue("steam_db_free_info_store_ok") == true) return; | |
load_licenses(v); | |
}, 1000); | |
return; | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment