您需要先安装一个扩展,例如 篡改猴、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];
- })();