您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Show a list of the steam keys
// ==UserScript== // @name Bundle Key Lister // @namespace https://greasyfork.org/de/scripts/394604-bundle-key-lister // @version 0.3 // @description Show a list of the steam keys // @author Guitar Hero // @grant none // @match https://www.humblebundle.com/downloads* // ==/UserScript== (function() { 'use strict'; function insertBefore(el, referenceNode) { referenceNode.parentNode.insertBefore(el, referenceNode); } function getKeyList() { var keyList = ''; document.querySelectorAll('.key-redeemer').forEach(function(item){ keyList += "<br>" + item.querySelector('.heading-text').innerText.trim() + ": "; var keyField = item.querySelector('.keyfield.redeemed .keyfield-value'); if (keyField == null || keyField.innerText == null) { keyList += "N/A"; return; } keyList += keyField.innerText.trim(); }); return keyList; } function generateBox() { var keyBox = document.querySelector(".key-container").parentElement; var captionBox = document.createElement("div"); captionBox.setAttribute("class", "wrapper"); captionBox.innerHTML = "<h3 style='font-size:2em; font-weight:bold; text-transform:uppercase;'>Steam Key Summary</h3>"; var keyListBox = document.createElement("div"); keyListBox.setAttribute("class", "wrapper"); keyListBox.innerHTML = "LOADING..."; keyListBox.setAttribute("id", "key-list-box"); keyListBox.setAttribute("style", "font-weight:bold;"); var buttonBox = document.createElement("div"); buttonBox.setAttribute("class", "wrapper"); buttonBox.setAttribute("style", "margin-top:50px; text-align: center;"); buttonBox.innerHTML = "<button class='bundleKeyListerButtonRevealAll' style='font-size:1.5em; font-weight:bold; padding: 10px 40px;'>Reveal ALL keys!<br/>(Warning: Use at your own risk)</button>"; var outerBox = document.createElement("div"); outerBox.setAttribute("class", "whitebox-redux small"); outerBox.insertAdjacentElement("afterbegin", buttonBox); outerBox.insertAdjacentElement("afterbegin", keyListBox); outerBox.insertAdjacentElement("afterbegin", captionBox); insertBefore(outerBox, keyBox); } function setKeyListToBox() { console.log("KEY BOX length? "+(document.querySelectorAll('.key-redeemer').length)); if (document.querySelectorAll('.key-redeemer').length == 0) { setTimeout(setKeyListToBox, 2000); return; } document.querySelector("#key-list-box").innerHTML = getKeyList(); } function addRevealButtonListener() { document.querySelector(".bundleKeyListerButtonRevealAll").addEventListener('click', ()=> { console.log("Clicked: reveal ALL keys!"); if (!confirm("Are you sure you want to reveal ALL keys?")) { return; } document.querySelectorAll('.key-container .keyfield:not(.redeemed) .keyfield-value').forEach(keyButton => { console.log(keyButton); keyButton.click(); }); document.querySelector("#key-list-box").innerHTML = "LOADING..."; setTimeout(setKeyListToBox, 5000); }); } generateBox(); setKeyListToBox(); addRevealButtonListener(); })();