您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Check if you own the games from someone's have list (instant Compare2Steam) using Barter.vg
- // ==UserScript==
- // @name SteamTrades - Have List Filter (Barter.vg)
- // @icon https://cdn.steamtrades.com/img/favicon.ico
- // @namespace Revadike
- // @author Revadike
- // @version 2.0.0
- // @description Check if you own the games from someone's have list (instant Compare2Steam) using Barter.vg
- // @support https://www.steamgifts.com/discussion/fN8vR/
- // @match https://www.steamtrades.com/trade/*
- // @grant unsafeWindow
- // @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
- // ==/UserScript==
- this.$ = this.jQuery = jQuery.noConflict(true);
- $(document).ready(addFilter);
- function addFilter() {
- const filter = $(`<div>`, {
- id: `filterBtn`,
- class: `btn_action green`,
- style: `z-index: 16777271; position: fixed; right: 1em; bottom: 1em;`,
- html: `<span><i class="fa fa-filter"></i> Filter</span>`
- });
- filter.appendTo(`body`);
- filter.click(addSelectorGadget);
- }
- function addSelectorGadget() {
- $(`#filterBtn`).hide();
- if (unsafeWindow.selector_gadget) {
- unsafeWindow.selector_gadget.rebind();
- setupSelectorGadget();
- } else {
- $.getScript(`https://dv0akt2986vzh.cloudfront.net/unstable/lib/selectorgadget.js`, () => {
- wait_for_script_load(`selector_gadget`, setupSelectorGadget);
- });
- }
- }
- function setupSelectorGadget() {
- let modscript = `line = line.toLowerCase(); line = line.replace("(Early Access)", "");`;
- const btnOk = $(`<input>`, { type: `button`, class: `sg_ignore`, value: `Finish` });
- const btnJs = $(`<input>`, { type: `button`, class: `sg_ignore`, value: `JS` });
- const SG = unsafeWindow.selector_gadget;
- btnOk.on(`click`, () => finishFilter(SG, modscript))
- btnJs.on(`click`, () => modscript = prompt(`Custom javascript to modify 'line' variable (each line)`, modscript));
- SG.sg_div.append(btnOk);
- SG.sg_div.prepend(btnJs);
- $(selector_gadget.sg_div).find(`[value=XPath]`).remove();
- $(selector_gadget.sg_div).find(`[value=X]`).click(() => $(`#filterBtn`).show());
- }
- function finishFilter(SG, modscript) {
- const selector = SG.path_output_field.value;
- if (selector === `No valid path found.`) {
- alert(`Please highlight the element(s) containing the games to filter`);
- return;
- }
- const bulk_input = getLines(selector).map(line => {
- eval(modscript);
- return line;
- }).join(`\n`);
- if (bulk_input.length > 40000) {
- alert(`Input too large. Please select fewer elements or reduce the input using JS.`);
- return;
- }
- const form = $(`<form>`, { action: `https://barter.vg/u/my/c/e/`, method: `POST`, target: `_blank` });
- form.append($(`<input>`, { type: `hidden`, name: `bulk_input`, value: bulk_input }));
- form.append($(`<input>`, { type: `hidden`, name: `action`, value: `Edit` }));
- $(`body`).append(form);
- form.submit();
- SG.unbind();
- $(`#filterBtn`).show();
- }
- function getLines(selector) {
- return [].concat(...$(selector).get().map((elem) => elem.innerText.split(`\n`)));
- }