3rdUnknown / AGENTS TRADING

// ==UserScript==
// @name         AGENTS TRADING
// @namespace    https://steamcommunity.com/market/search?q=%D0%BD%D0%B0%D1%88%D0%B8%D0%B2%D0%BA%D0%B0&descriptions=1&category_730_ItemSet%5B%5D=tag_set_op9_characters&category_730_ProPlayer%5B%5D=any&category_730_StickerCapsule%5B%5D=any&category_730_TournamentTeam%5B%5D=any&category_730_Weapon%5B%5D=any&appid=730
// @namespace    https://steamcommunity.com/market/search?q=%D0%BD%D0%B0%D1%88%D0%B8%D0%B2%D0%BA%D0%B0&descriptions=1&category_730_ItemSet%5B%5D=tag_set_op10_characters&category_730_ProPlayer%5B%5D=any&category_730_StickerCapsule%5B%5D=any&category_730_TournamentTeam%5B%5D=any&category_730_Weapon%5B%5D=any&appid=730
// @version      1.1337
// @description  Steam Inventory Helper extension should be installed and enabled
// @description  Script works correctly only with UAH currency
// @author       3rdUnknown
// @copyright    2021
// @license      MIT
// @match        https://steamcommunity.com/market/listings/730/*
// @grant        none
// @run-at       document-idle
// @updateURL    https://openuserjs.org/meta/3rdUnknown/AGENTS_TRADING.meta.js
// ==/UserScript==

(function () {
  'use strict';
  let i = setInterval(function () {
    if (document.querySelectorAll(".sih-images li")) {
      // Wait when SIH will finished updating items list
      clearInterval(i);

      let currentPrice = document.querySelectorAll("span.market_commodity_orders_header_promote")[1].innerHTML;
      // Convert UAH price to float
      currentPrice = currentPrice.slice(0, -1)
      currentPrice = currentPrice.replace(/,/g, '.')
      console.log(">" + currentPrice + "<")

      let agentsArr = document.querySelectorAll("div.market_listing_row");
      let agentsDiv, selectedPatch, patchesInAgentsBlock, agentPrice, agentPriceValue, agentName;
      let priceDiff, priceDiffPercentage;
      let minPatches = 2;
      let bestPatchesArr = [
        'Нашивка | Здоровье',
        'Нашивка | Босс',
        'Нашивка | Вой',
        'Нашивка | Медная лямбда',
        'Нашивка | Гнев',
        'Нашивка | Феникс'
      ]

      for (let elem of agentsArr) {
        agentsDiv = elem.querySelectorAll("div.sih-images li");
        // Count number of patches for specific agent
        patchesInAgentsBlock = agentsDiv.length;
        console.log("agent has " + patchesInAgentsBlock + " patches");
        // Select only agents with number of patches more or equal than minPatches
        if (patchesInAgentsBlock < minPatches) {
          elem.remove();
          console.log(">> agent removed");
        }
        else {
          for (var step = 0; step < minPatches; step++) {
            // Found rare patches
            selectedPatch = agentsDiv[step].getElementsByTagName("img")[0].getAttribute("title");
            if (bestPatchesArr.includes(selectedPatch)) {
              console.log("Best patch: " + selectedPatch)
              agentName = elem.querySelectorAll("span.market_listing_item_name")[0]
              agentName.innerHTML = agentName.innerHTML + '<font color="red"> BEST>> </font>'
            }
          }
          // Highlight price diff
          agentPrice = elem.querySelectorAll("span.market_listing_price_with_fee")[0]
          // Convert UAH price to float
          agentPriceValue = agentPrice.innerText.slice(0, -1)
          agentPriceValue = agentPriceValue.replace(/,/g, '.')

          priceDiff = (agentPriceValue - currentPrice).toFixed(2)
          priceDiffPercentage = ((priceDiff / currentPrice) * 100).toFixed(0)
          agentPrice.innerHTML = '⬆️ <font color="red">' + priceDiff + '</font><font color="orange">  +' + priceDiffPercentage + '%</font><br>' + agentPrice.innerHTML
          console.log(">> 3 patches found with price >" + agentPriceValue + "< and diff: " + (priceDiff));
        }
      }
    }
  }, 1000);

})();