Fast sell Steam items with the current price
当前为
// ==UserScript==
// @name FAST SELL STEAM
// @include http*://steamcommunity.com/profiles/*/inventory*
// @include http*://steamcommunity.com/id/*/inventory*
// @description Fast sell Steam items with the current price
// @version 1.0
// @namespace https://greasyfork.org/users/6507
// ==/UserScript==
//
//
//
function insertAfter(referenceNode, newNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
async function asyncQuerySelector(selector, win = window) {
return new Promise(resolve => {
const interval = setInterval(() => {
const node = win.document.querySelector(selector);
if (node) {
clearInterval(interval);
resolve(node);
}
}, 250);
});
}
/**
* Disable auto-reload Steam inventory on sell as it is resetting all filters
*/
CInventory.prototype.GetCountTotalItems = function () {
return 1001;
};
document.addEventListener('click', () => {
const sellButtons = document.querySelectorAll('.item_market_action_button:not(:has(+ .fast_sell)):not(.fast_sell)');
sellButtons.forEach((btn) => {
const fastSellButton = btn.cloneNode(true);
fastSellButton.classList.add('fast_sell', 'btn_darkblue_white_innerfade');
fastSellButton.classList.remove('item_market_action_button_green');
fastSellButton.style.marginLeft = '10px';
fastSellButton.querySelector('.item_market_action_button_contents').innerText = 'Fast Sell';
fastSellButton.href = '';
fastSellButton.addEventListener('click', (event) => {
event.preventDefault();
fastSellCurrentItem(btn);
});
insertAfter(btn, fastSellButton);
});
});
function getCurrentItemPrice() {
const pricesDivs = [...document.querySelectorAll('.inventory_iteminfo')].filter((x) => x.style.display !== 'none');
if (pricesDivs.length > 1 || !pricesDivs.length) {
return null;
}
const [priceDiv] = pricesDivs;
const priceText = priceDiv.querySelector('.item_market_actions').innerText;
const PRICE_REGEX = /(\d+(?:\.|,?)\d+)/;
const [, price] = priceText.match(PRICE_REGEX) || [];
return price;
}
async function fastSellCurrentItem(sellButton) {
const price = getCurrentItemPrice();
if (!price) {
return alert("Can't determine price");
}
sellButton.click();
const priceInput = await asyncQuerySelector('#market_sell_buyercurrency_input');
priceInput.value = price;
priceInput.dispatchEvent(new KeyboardEvent('keyup'));
document.querySelector('#market_sell_dialog_accept_ssa').checked = true;
document.querySelector('#market_sell_dialog_accept').click();
document.querySelector('#market_sell_dialog_ok').click();
}