您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Output markdown to trade for 1:1 card sets on steamtrades.com
当前为
// ==UserScript== // @name SteamTools, List up duplicate card sets // @namespace http://tampermonkey.net/ // @version 0.12 // @description Output markdown to trade for 1:1 card sets on steamtrades.com // @author You // @match https://steam.tools/cards/* // @require http://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js // @grant GM.xmlHttpRequest // @runat document-end // @nowrap // ==/UserScript== (function() { 'use strict'; $(function () {/* <div> <h3>Duplicate card sets</h3> <textarea id="haveOutput" readonly /> <h3>Aready lvl 5 / Enough to create lvl 5 badge</h3> <textarea id="enoughOutput" readonly /> <h3>Log</h3> <textarea style="max-height: 150px;" id="logOutput" readonly></textarea> <p> <button id="checkDuplicateButton">Check duplicate sets</button> <button id="outputLastButton">Output latest result</button> </p> </div> */}.toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1]).appendTo("#container"); var $haveOutput = $("#haveOutput"); var $enoughOutput = $("#enoughOutput"); var $logOutput = $("#logOutput"); var $button = $("#checkDuplicateButton").click(main); $("#outputLastButton").click(function () { $haveOutput.text(localStorage["lastHaveOutput"]); $enoughOutput.text(localStorage["lastEnoughOutput"]); }); function logging (log) { console.log("Logging: " + log); $logOutput.text($logOutput.text() + log + "\n"); } function sleepAsyc (ms) { return new Promise((resolve, reject) => { setTimeout(resolve, ms); }); } async function main () { $button.text("checking"); $button[0].disabled = "true"; var headerIndex = $("#set_table_wrapper .dataTables_scrollHead th").map(function () { return $(this).text(); }).toArray(); var sets = {}; $("#set_table tbody tr").each(function () { var $td = $(this).find("td"); var title = $($td[headerIndex.indexOf("Game")]).text(); var links = {}; $($td[headerIndex.indexOf("Links")]).find("a").each(function () { links[$(this).text().substr(1, 1)] = $(this).attr("href"); }); var owned = parseInt($($td[headerIndex.indexOf("# Owned")]).text()); var cards = parseInt($($td[headerIndex.indexOf("# Cards")]).text()); var unique = parseInt($($td[headerIndex.indexOf("# Unique")]).text()); var level = parseInt($($td[headerIndex.indexOf("Badge Lvl")]).text()); // var setPrice = parseInt($($td[headerIndex.indexOf("Set Price")]).text()); sets[title] = { title: title, links: links, owned: owned, cards: cards, level: level, unique: unique, // setPrice: setPrice, }; }); console.log(sets); var enough = []; for (var title in sets) { var s = sets[title]; if (s.level == 5) { s.enough = "lvl5"; enough.push(s); } else if (s.level * s.cards + s.owned >= s.cards * 5) { s.enough = "enough"; enough.push(s); } } console.log(enough); var have = []; var targets = []; for (var title in sets) { var s = sets[title]; if (s.cards == s.unique && ((s.level == 5 && s.owned / s.cards >= 2) || (s.level < 5 && s.owned - s.level * s.cards / s.cards >= 4)) ) { targets.push(s); } } for (var i = 0; i < targets.length; i++) { var s = targets[i]; await new Promise((resolve, reject) => { logging("Checking duplicates (" + i + "/" + targets.length + ") : " + s.title); GM.xmlHttpRequest({ method: "GET", url: s.links.B, onload: function (xhr) { resolve(xhr); }, onerror: function () { reject(); } }); }) .then(xhr => { var min = Infinity; var $html = $(xhr.responseText); $html.find(".badge_card_set_card").each(function (i) { var qty = 0; var $qty = $(this).find(".badge_card_set_text_qty"); if ($qty[0]) { min = Math.min(parseInt($qty.text().match(/\d+/)), min); } else { min = 0; } }); if (min > 0 && 5 - s.level > min) { s.duplicates = min; have.push(s); } logging(min + " duplicate"); }) .catch(()=> console.log("faild")); await sleepAsyc(3000); } console.log(have); var output = "## Blacklist\n"; for (var i = 0; i < enough.length; i++) { var s = enough[i]; output += "- [{title}]({url}) *{enough}*\n" .replace("{title}", s.title) .replace("{url}", s.links.B) .replace("{enough}", s.enough); } $enoughOutput.text(output); localStorage["lastEnoughOutput"] = output; output = "|Available card sets|Quantity|Cards in set|\n"; output += "|:-|: |: |\n" for (var i = 0; i < have.length; i++) { var s = have[i]; output += "|[{title}]({url})|x{duplicates}|{cards}|\n" .replace("{title}", s.title) .replace("{url}", s.links.B) .replace("{duplicates}", s.duplicates) .replace("{cards}", s.cards); } $haveOutput.text(output); localStorage["lastHaveOutput"] = output; $button.text("Check duplicate sets"); $button[0].disabled = ""; } // Your code here... // .toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1]; })();