Greasy Fork is available in English.

CSGO饰品自由议价

得润(need.run)官方脚本,用于buff、悠悠有品、igxe、c5饰品直达自由交流区,无惧敏感词

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         CSGO饰品自由议价
// @description  得润(need.run)官方脚本,用于buff、悠悠有品、igxe、c5饰品直达自由交流区,无惧敏感词
// @icon         https://s1.imagehub.cc/images/2023/04/12/d3461ee6e5a2ffa11b0903bf46b6b862.png
// @namespace    https://github.com/qianjiachun
// @version      2023.04.15.01
// @author       小淳
// @match        *://buff.163.com/goods*
// @match        *://www.youpin898.com/goodInfo*
// @match        *://www.igxe.cn/product/730*
// @match        *://www.c5game.com/csgo/*
// @require      https://cdn.jsdelivr.net/npm/notice.js@0.4.0/dist/notice.js
// @run-at       document-start
// @grant        unsafeWindow
// @grant        GM_openInTab
// @license      MIT
// ==/UserScript==
unsafeWindow.needrun_requestHookList = [];
unsafeWindow.needrun_requestHookCallback = function (xhr) {};

var originalOpen = XMLHttpRequest.prototype.open;
var originalSend = XMLHttpRequest.prototype.send;

XMLHttpRequest.prototype.open = function () {
  this._url = arguments[1];
  originalOpen.apply(this, arguments);
};

XMLHttpRequest.prototype.send = function () {
  var self = this;
  this.addEventListener('load', function () {
    if (self.readyState === 4 && self.status === 200) {
      unsafeWindow.needrun_requestHookList.push(self);
      unsafeWindow.needrun_requestHookCallback(self);
    }
  });
  originalSend.apply(this, arguments);
};
(function() {
  "use strict";
  var __vite_style__ = document.createElement("style");
  __vite_style__.textContent = ".flex {\r\n  display: flex;\r\n}\r\n\r\n.items-center {\r\n  align-items: center;\r\n}\r\n\r\n.justify-center {\r\n  justify-content: center;\r\n}\r\n\r\n.flex-center {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n}\r\n\r\n.needrun-text-color {\r\n  background: linear-gradient(to right, rgb(47, 112, 193), rgb(116, 97, 195));\r\n  background-clip: text;\r\n  -webkit-background-clip: text;\r\n  -webkit-text-fill-color: transparent;\r\n}\r\n\r\n.needrun-chat-btn:hover {\r\n  scale: 1.2;\r\n}\r\n\r\n.needrun-chat-btn {\r\n  transition: all 0.3s;\r\n}.noticejs-top {\r\n  top: 0;\r\n  width: 100% !important\r\n}\r\n\r\n.noticejs-top .item {\r\n  border-radius: 0 !important;\r\n  margin: 0 !important\r\n}\r\n\r\n.noticejs-topRight {\r\n  top: 10px;\r\n  right: 10px\r\n}\r\n\r\n.noticejs-topLeft {\r\n  top: 10px;\r\n  left: 10px\r\n}\r\n\r\n.noticejs-topCenter {\r\n  top: 10px;\r\n  left: 50%;\r\n  transform: translate(-50%)\r\n}\r\n\r\n.noticejs-middleLeft,\r\n.noticejs-middleRight {\r\n  right: 10px;\r\n  top: 50%;\r\n  transform: translateY(-50%)\r\n}\r\n\r\n.noticejs-middleLeft {\r\n  left: 10px\r\n}\r\n\r\n.noticejs-middleCenter {\r\n  top: 50%;\r\n  left: 50%;\r\n  transform: translate(-50%, -50%)\r\n}\r\n\r\n.noticejs-bottom {\r\n  bottom: 0;\r\n  width: 100% !important\r\n}\r\n\r\n.noticejs-bottom .item {\r\n  border-radius: 0 !important;\r\n  margin: 0 !important\r\n}\r\n\r\n.noticejs-bottomRight {\r\n  bottom: 10px;\r\n  right: 10px\r\n}\r\n\r\n.noticejs-bottomLeft {\r\n  bottom: 10px;\r\n  left: 10px\r\n}\r\n\r\n.noticejs-bottomCenter {\r\n  bottom: 10px;\r\n  left: 50%;\r\n  transform: translate(-50%)\r\n}\r\n\r\n.noticejs {\r\n  font-family: Helvetica Neue, Helvetica, Arial, sans-serif\r\n}\r\n\r\n.noticejs .item {\r\n  margin: 0 0 10px;\r\n  border-radius: 3px;\r\n  overflow: hidden\r\n}\r\n\r\n.noticejs .item .close {\r\n  float: right;\r\n  font-size: 18px;\r\n  font-weight: 700;\r\n  line-height: 1;\r\n  color: #fff;\r\n  text-shadow: 0 1px 0 #fff;\r\n  opacity: 1;\r\n  margin-right: 7px\r\n}\r\n\r\n.noticejs .item .close:hover {\r\n  opacity: .5;\r\n  color: #000\r\n}\r\n\r\n.noticejs .item a {\r\n  color: #fff;\r\n  border-bottom: 1px dashed #fff\r\n}\r\n\r\n.noticejs .item a,\r\n.noticejs .item a:hover {\r\n  text-decoration: none\r\n}\r\n\r\n.noticejs .success {\r\n  background-color: #64ce83\r\n}\r\n\r\n.noticejs .success .noticejs-heading {\r\n  background-color: #3da95c;\r\n  color: #fff;\r\n  padding: 10px\r\n}\r\n\r\n.noticejs .success .noticejs-body {\r\n  color: #fff;\r\n  padding: 10px\r\n}\r\n\r\n.noticejs .success .noticejs-body:hover {\r\n  visibility: visible !important\r\n}\r\n\r\n.noticejs .success .noticejs-content {\r\n  visibility: visible\r\n}\r\n\r\n.noticejs .info {\r\n  background-color: #3ea2ff\r\n}\r\n\r\n.noticejs .info .noticejs-heading {\r\n  background-color: #067cea;\r\n  color: #fff;\r\n  padding: 10px\r\n}\r\n\r\n.noticejs .info .noticejs-body {\r\n  color: #fff;\r\n  padding: 10px\r\n}\r\n\r\n.noticejs .info .noticejs-body:hover {\r\n  visibility: visible !important\r\n}\r\n\r\n.noticejs .info .noticejs-content {\r\n  visibility: visible\r\n}\r\n\r\n.noticejs .warning {\r\n  background-color: #ff7f48\r\n}\r\n\r\n.noticejs .warning .noticejs-heading {\r\n  background-color: #f44e06;\r\n  color: #fff;\r\n  padding: 10px\r\n}\r\n\r\n.noticejs .warning .noticejs-body {\r\n  color: #fff;\r\n  padding: 10px\r\n}\r\n\r\n.noticejs .warning .noticejs-body:hover {\r\n  visibility: visible !important\r\n}\r\n\r\n.noticejs .warning .noticejs-content {\r\n  visibility: visible\r\n}\r\n\r\n.noticejs .error {\r\n  background-color: #e74c3c\r\n}\r\n\r\n.noticejs .error .noticejs-heading {\r\n  background-color: #ba2c1d;\r\n  color: #fff;\r\n  padding: 10px\r\n}\r\n\r\n.noticejs .error .noticejs-body {\r\n  color: #fff;\r\n  padding: 10px\r\n}\r\n\r\n.noticejs .error .noticejs-body:hover {\r\n  visibility: visible !important\r\n}\r\n\r\n.noticejs .error .noticejs-content {\r\n  visibility: visible\r\n}\r\n\r\n.noticejs .progressbar {\r\n  width: 100%\r\n}\r\n\r\n.noticejs .progressbar .bar {\r\n  width: 1%;\r\n  height: 30px;\r\n  background-color: #4caf50\r\n}\r\n\r\n.noticejs .success .noticejs-progressbar {\r\n  width: 100%;\r\n  background-color: #64ce83;\r\n  margin-top: -1px\r\n}\r\n\r\n.noticejs .success .noticejs-progressbar .noticejs-bar {\r\n  width: 100%;\r\n  height: 5px;\r\n  background: #3da95c\r\n}\r\n\r\n.noticejs .info .noticejs-progressbar {\r\n  width: 100%;\r\n  background-color: #3ea2ff;\r\n  margin-top: -1px\r\n}\r\n\r\n.noticejs .info .noticejs-progressbar .noticejs-bar {\r\n  width: 100%;\r\n  height: 5px;\r\n  background: #067cea\r\n}\r\n\r\n.noticejs .warning .noticejs-progressbar {\r\n  width: 100%;\r\n  background-color: #ff7f48;\r\n  margin-top: -1px\r\n}\r\n\r\n.noticejs .warning .noticejs-progressbar .noticejs-bar {\r\n  width: 100%;\r\n  height: 5px;\r\n  background: #f44e06\r\n}\r\n\r\n.noticejs .error .noticejs-progressbar {\r\n  width: 100%;\r\n  background-color: #e74c3c;\r\n  margin-top: -1px\r\n}\r\n\r\n.noticejs .error .noticejs-progressbar .noticejs-bar {\r\n  width: 100%;\r\n  height: 5px;\r\n  background: #ba2c1d\r\n}\r\n\r\n@keyframes noticejs-fadeOut {\r\n  0% {\r\n    opacity: 1\r\n  }\r\n\r\n  to {\r\n    opacity: 0\r\n  }\r\n}\r\n\r\n.noticejs-fadeOut {\r\n  animation-name: noticejs-fadeOut\r\n}\r\n\r\n@keyframes noticejs-modal-in {\r\n  to {\r\n    opacity: .3\r\n  }\r\n}\r\n\r\n@keyframes noticejs-modal-out {\r\n  to {\r\n    opacity: 0\r\n  }\r\n}\r\n\r\n.noticejs-rtl .noticejs-heading {\r\n  direction: rtl\r\n}\r\n\r\n.noticejs-rtl .close {\r\n  float: left !important;\r\n  margin-left: 7px;\r\n  margin-right: 0 !important\r\n}\r\n\r\n.noticejs-rtl .noticejs-content {\r\n  direction: rtl\r\n}\r\n\r\n.noticejs {\r\n  position: fixed;\r\n  z-index: 10050;\r\n  width: 320px\r\n}\r\n\r\n.noticejs ::-webkit-scrollbar {\r\n  width: 8px\r\n}\r\n\r\n.noticejs ::-webkit-scrollbar-button {\r\n  width: 8px;\r\n  height: 5px\r\n}\r\n\r\n.noticejs ::-webkit-scrollbar-track {\r\n  border-radius: 10px\r\n}\r\n\r\n.noticejs ::-webkit-scrollbar-thumb {\r\n  background: hsla(0, 0%, 100%, .5);\r\n  border-radius: 10px\r\n}\r\n\r\n.noticejs ::-webkit-scrollbar-thumb:hover {\r\n  background: #fff\r\n}\r\n\r\n.noticejs-modal {\r\n  position: fixed;\r\n  width: 100%;\r\n  height: 100%;\r\n  background-color: #000;\r\n  z-index: 10000;\r\n  opacity: .3;\r\n  left: 0;\r\n  top: 0\r\n}\r\n\r\n.noticejs-modal-open {\r\n  opacity: 0;\r\n  animation: noticejs-modal-in .3s ease-out\r\n}\r\n\r\n.noticejs-modal-close {\r\n  animation: noticejs-modal-out .3s ease-out;\r\n  animation-fill-mode: forwards\r\n}";
  document.head.appendChild(__vite_style__);
  function renderChatButton({
    style,
    className,
    goodsInfo
  }) {
    if (!goodsInfo)
      return `<div style="cursor: pointer;${style}" class="needrun-chat-btn flex-center needrun-text-color ${className}">
		<svg t="1681373903044" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4525" width="16" height="16"><path d="M628.363636 605.090909c-18.618182 0-34.909091-16.290909-34.909091-34.909091S609.745455 535.272727 628.363636 535.272727h41.890909c18.618182 0 34.909091 16.290909 34.909091 34.909091s-13.963636 34.909091-34.909091 34.909091H628.363636z m-325.818181 0c-18.618182 0-34.909091-16.290909-34.909091-34.909091S283.927273 535.272727 302.545455 535.272727h160.581818c18.618182 0 34.909091 16.290909 34.909091 34.909091s-16.290909 34.909091-34.909091 34.909091H302.545455z m0-209.454545c-18.618182 0-34.909091-16.290909-34.909091-34.909091S283.927273 325.818182 302.545455 325.818182h372.363636c18.618182 0 34.909091 16.290909 34.909091 34.909091S693.527273 395.636364 674.909091 395.636364H302.545455z m202.472727 507.345454l-104.727273 69.818182c-48.872727 32.581818-114.036364 18.618182-144.290909-30.254545-2.327273-4.654545-4.654545-6.981818-6.981818-11.636364l-18.618182-39.563636c-111.709091-13.963636-195.490909-107.054545-195.490909-218.763637V272.290909C34.909091 162.909091 116.363636 69.818182 225.745455 53.527273c95.418182-13.963636 190.836364-18.618182 286.254545-18.618182s190.836364 6.981818 286.254545 18.618182c109.381818 16.290909 190.836364 109.381818 190.836364 218.763636v400.290909c0 116.363636-90.763636 214.109091-207.127273 221.090909-90.763636 4.654545-179.2 9.309091-269.963636 9.309091h-6.981818zM474.763636 837.818182c4.654545-4.654545 11.636364-6.981818 18.618182-6.981818h16.290909c88.436364 0 176.872727-2.327273 265.309091-9.309091 79.127273-4.654545 141.963636-72.145455 141.963637-151.272728V269.963636c0-76.8-55.854545-139.636364-130.327273-148.945454-90.763636-9.309091-181.527273-16.290909-274.618182-16.290909s-183.854545 6.981818-276.945455 18.618182c-74.472727 9.309091-130.327273 74.472727-130.327272 148.945454v400.290909c0 79.127273 62.836364 146.618182 141.963636 151.272727h9.309091c11.636364 0 23.272727 6.981818 27.927273 18.618182l27.927272 55.854546c0 2.327273 2.327273 2.327273 2.327273 4.654545 11.636364 16.290909 32.581818 20.945455 48.872727 9.309091l111.709091-74.472727z" fill="rgb(116, 97, 195)" p-id="4526"></path></svg>
		<span style="margin-left:0.25rem;font-size:14px;">联系</span>
	</div>`;
    const url = getNeedRunUrlByGoodsInfo(goodsInfo);
    return `<div style="cursor: pointer;${style}" class="needrun-chat-btn ${className}">
	<a href="${url}" target="_blank" class="flex-center needrun-text-color">
		<svg t="1681373903044" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4525" width="16" height="16"><path d="M628.363636 605.090909c-18.618182 0-34.909091-16.290909-34.909091-34.909091S609.745455 535.272727 628.363636 535.272727h41.890909c18.618182 0 34.909091 16.290909 34.909091 34.909091s-13.963636 34.909091-34.909091 34.909091H628.363636z m-325.818181 0c-18.618182 0-34.909091-16.290909-34.909091-34.909091S283.927273 535.272727 302.545455 535.272727h160.581818c18.618182 0 34.909091 16.290909 34.909091 34.909091s-16.290909 34.909091-34.909091 34.909091H302.545455z m0-209.454545c-18.618182 0-34.909091-16.290909-34.909091-34.909091S283.927273 325.818182 302.545455 325.818182h372.363636c18.618182 0 34.909091 16.290909 34.909091 34.909091S693.527273 395.636364 674.909091 395.636364H302.545455z m202.472727 507.345454l-104.727273 69.818182c-48.872727 32.581818-114.036364 18.618182-144.290909-30.254545-2.327273-4.654545-4.654545-6.981818-6.981818-11.636364l-18.618182-39.563636c-111.709091-13.963636-195.490909-107.054545-195.490909-218.763637V272.290909C34.909091 162.909091 116.363636 69.818182 225.745455 53.527273c95.418182-13.963636 190.836364-18.618182 286.254545-18.618182s190.836364 6.981818 286.254545 18.618182c109.381818 16.290909 190.836364 109.381818 190.836364 218.763636v400.290909c0 116.363636-90.763636 214.109091-207.127273 221.090909-90.763636 4.654545-179.2 9.309091-269.963636 9.309091h-6.981818zM474.763636 837.818182c4.654545-4.654545 11.636364-6.981818 18.618182-6.981818h16.290909c88.436364 0 176.872727-2.327273 265.309091-9.309091 79.127273-4.654545 141.963636-72.145455 141.963637-151.272728V269.963636c0-76.8-55.854545-139.636364-130.327273-148.945454-90.763636-9.309091-181.527273-16.290909-274.618182-16.290909s-183.854545 6.981818-276.945455 18.618182c-74.472727 9.309091-130.327273 74.472727-130.327272 148.945454v400.290909c0 79.127273 62.836364 146.618182 141.963636 151.272727h9.309091c11.636364 0 23.272727 6.981818 27.927273 18.618182l27.927272 55.854546c0 2.327273 2.327273 2.327273 2.327273 4.654545 11.636364 16.290909 32.581818 20.945455 48.872727 9.309091l111.709091-74.472727z" fill="rgb(116, 97, 195)" p-id="4526"></path></svg>
		<span style="margin-left:0.25rem;font-size:14px;">联系</span>
	</a>
	</div>`;
  }
  function tidyObject(obj) {
    const newObj = {};
    for (const key in obj) {
      if (obj[key] === 0 || obj[key] && obj[key] !== "" && obj[key] !== "undefined" && obj[key] !== "NaN") {
        newObj[key] = obj[key];
      }
    }
    return newObj;
  }
  function getNeedRunUrlByGoodsInfo(goodsInfo) {
    const prefix = "https://need.run/goods";
    const {
      goodsName,
      paintIndex,
      paintSeed,
      paintWear,
      inspectImg,
      platform
    } = tidyObject(goodsInfo);
    let search = new URLSearchParams(tidyObject({
      name: encodeURIComponent(goodsName),
      index: String(paintIndex),
      seed: String(paintSeed),
      wear: formatPaintWear(paintWear),
      img: inspectImg,
      platform: String(platform)
    }));
    return `${prefix}?${search.toString()}`;
  }
  function showMessage(msg, type) {
    new NoticeJs({
      text: msg,
      type,
      position: "bottomRight"
    }).show();
  }
  const formatPaintWear = (wear) => {
    if (wear === "")
      return wear;
    const numberWear = Number(wear);
    return numberWear > 0 ? numberWear.toFixed(16) : "";
  };
  function openPage(url, b = true) {
    GM_openInTab(url, {
      active: b
    });
  }
  function init$7() {
    const requestList = unsafeWindow.needrun_requestHookList;
    if (requestList.length <= 0) {
      let marketShow = new unsafeWindow.marketShow();
      marketShow.init();
    }
    for (let i = 0; i < requestList.length; i++) {
      let item = requestList[i];
      if (item.responseURL.includes("goods/sell_order")) {
        let data = JSON.parse(item.responseText);
        insertDom$3(data.data);
        break;
      }
    }
    unsafeWindow.needrun_requestHookCallback = function(xhr) {
      if (xhr.responseURL.includes("goods/sell_order")) {
        let data = JSON.parse(xhr.responseText);
        insertDom$3(data.data);
      }
    };
  }
  function insertDom$3(data) {
    const {
      goods_infos,
      items
    } = data;
    const url = new URL(location.href);
    const goodsId = url.pathname.substring(url.pathname.lastIndexOf("/") + 1);
    const sellings = document.querySelectorAll(".list_tb_csgo .selling");
    for (let i = 0; i < sellings.length; i++) {
      const selling = sellings[i];
      const data2 = items[i];
      if (!goods_infos[goodsId].name || goods_infos[goodsId].name === "")
        continue;
      const inspectImg = data2.asset_info.info.inspect_mobile_url && data2.asset_info.info.inspect_mobile_url !== "" ? data2.asset_info.info.inspect_mobile_url : data2.img_src;
      const goodsInfo = {
        goodsName: goods_infos[goodsId].name,
        paintIndex: data2.asset_info.info.paintindex || 0,
        paintSeed: data2.asset_info.info.paintseed || 0,
        paintWear: data2.asset_info.paintwear || "",
        inspectImg,
        platform: 0
      };
      const dom = selling.querySelector(".j_shoptip_handler");
      dom.insertAdjacentHTML("afterend", renderChatButton({
        style: "width: 100%",
        goodsInfo
      }));
    }
  }
  const ChatButton$3 = {
    init: init$7
  };
  function initPkg$3() {
    if (location.href.includes("buff") && location.href.includes("goods")) {
      let count = 0;
      let timer = setInterval(() => {
        if (document.getElementsByClassName("j_shoptip_handler").length > 0) {
          clearInterval(timer);
          ChatButton$3.init();
          count++;
          if (count > 200)
            clearInterval(timer);
        }
      }, 300);
    }
  }
  function init$6() {
    initPkg$3();
  }
  const buff = {
    init: init$6
  };
  function apiGetYoupinGoodsDetail(goodsId, commodityNo) {
    return new Promise((resolve) => {
      fetch(`https://api.youpin898.com/api/commodity/Commodity/Detail?Id=${String(goodsId)}&CommodityNo=${String(commodityNo)}`, {
        method: "GET"
      }).then((res) => res.json()).then((ret) => {
        resolve(ret);
      }).catch((err) => {
        console.log(err);
        resolve({});
      });
    });
  }
  function init$5() {
    unsafeWindow.needrun_requestHookCallback = function(xhr) {
      if (xhr.responseURL.includes("GetCsGoPagedList")) {
        let data = JSON.parse(xhr.responseText);
        let count = 0;
        let timer = setInterval(() => {
          if (document.getElementsByClassName("sellerNickInfo").length > 0) {
            clearInterval(timer);
            insertDom$2();
            initFunc$2(data.Data.CommodityList);
          }
          count++;
          if (count > 200)
            clearInterval(timer);
        }, 100);
      }
    };
  }
  function insertDom$2() {
    const sellings = document.querySelectorAll(".sellerNickInfo");
    for (let i = 0; i < sellings.length; i++) {
      const selling = sellings[i];
      selling.insertAdjacentHTML("afterend", renderChatButton({
        style: "width: 100%"
      }));
    }
  }
  function initFunc$2(items) {
    const btns = document.querySelectorAll(".needrun-chat-btn");
    for (let i = 0; i < btns.length; i++) {
      const btn = btns[i];
      const itemData = items[i];
      btn.addEventListener("click", async () => {
        showMessage("数据请求中,请稍等...", "info");
        const goodsId = itemData.Id;
        const commodityNo = itemData.CommodityNo;
        let ret = await apiGetYoupinGoodsDetail(goodsId, commodityNo);
        if (ret.Code !== 0) {
          showMessage("数据获取失败,请重试", "error");
          return;
        }
        showMessage("数据获取完毕", "success");
        const data = ret.Data;
        let img = "";
        if (data.NewImages && data.NewImages !== "") {
          img = "https://youpin.img898.com/" + data.NewImages;
        } else if (data.Images && data.Images !== "") {
          let imgArr = data.Images.split(",");
          for (let i2 = 0; i2 < imgArr.length; i2++) {
            img += "https://youpin.img898.com/" + imgArr[i2] + ";";
          }
        } else {
          img = data.ImgUrl;
        }
        const goodsInfo = {
          goodsName: data.CommodityName,
          inspectImg: img,
          paintIndex: data.PaintIndex ? Number(data.PaintIndex) : 0,
          paintSeed: data.PaintSeed ? Number(data.PaintSeed) : 0,
          paintWear: data.Abrade,
          platform: 1
        };
        openPage(getNeedRunUrlByGoodsInfo(goodsInfo));
      });
    }
  }
  const ChatButton$2 = {
    init: init$5
  };
  function initPkg$2() {
    ChatButton$2.init();
  }
  function init$4() {
    initPkg$2();
  }
  const youpin = {
    init: init$4
  };
  function apiGetIgxeGoodsInspectImg(id) {
    return new Promise((resolve) => {
      fetch(`https://www.igxe.cn/show-inspect-image-${String(id)}`, {
        method: "GET"
      }).then((res) => res.json()).then((ret) => {
        resolve(ret.url);
      }).catch((err) => {
        console.log(err);
        resolve("");
      });
    });
  }
  function init$3() {
    unsafeWindow.needrun_requestHookCallback = function(xhr) {
      if (xhr.responseURL.includes("product/trade")) {
        let data = JSON.parse(xhr.responseText);
        let count = 0;
        let timer = setInterval(() => {
          if (document.getElementsByClassName("user-img").length > 0) {
            clearInterval(timer);
            insertDom$1();
            initFunc$1(data.d_list);
          }
          count++;
          if (count > 200)
            clearInterval(timer);
        }, 100);
      }
    };
  }
  function insertDom$1() {
    const sellings = document.querySelectorAll(".user-img");
    for (let i = 0; i < sellings.length; i++) {
      const selling = sellings[i];
      if (selling.querySelector(".needrun-chat-btn")) {
        selling.querySelector(".needrun-chat-btn").remove();
      }
      let style = "width: 100%;";
      if (selling.querySelectorAll(".ui-box").length > 0) {
        style += "position: absolute;margin-top: 4rem;";
      }
      selling.insertAdjacentHTML("beforeend", renderChatButton({
        style
      }));
    }
  }
  function initFunc$1(items) {
    const btns = document.querySelectorAll(".needrun-chat-btn");
    for (let i = 0; i < btns.length; i++) {
      const btn = btns[i];
      const item = items[i];
      btn.addEventListener("click", async () => {
        let img = item.icon_url;
        if (item.inspect_img_small && item.inspect_img_small !== "") {
          showMessage("数据请求中,请稍等...", "info");
          img = await apiGetIgxeGoodsInspectImg(item.id) || item.icon_url;
          showMessage("数据获取完毕", "success");
        }
        const goodsInfo = {
          goodsName: item.name,
          inspectImg: img,
          paintIndex: item.paint_index ? Number(item.paint_index) : 0,
          paintSeed: item.paint_seed ? Number(item.paint_seed) : 0,
          paintWear: item.exterior_wear,
          platform: 2
        };
        openPage(getNeedRunUrlByGoodsInfo(goodsInfo));
      });
    }
  }
  const ChatButton$1 = {
    init: init$3
  };
  function initPkg$1() {
    ChatButton$1.init();
  }
  function init$2() {
    initPkg$1();
  }
  const igxe = {
    init: init$2
  };
  function apiGetC5GoodsDetail(cardId) {
    return new Promise((resolve) => {
      fetch(`https://www.c5game.com/napi/trade/steamtrade/sga/sell/v3/detail?id=${cardId}`, {
        method: "GET"
      }).then((res) => res.json()).then((ret) => {
        resolve(ret);
      }).catch((err) => {
        console.log(err);
        resolve({});
      });
    });
  }
  function init$1() {
    insertDom();
    initFunc();
  }
  function insertDom() {
    const sellings = document.querySelectorAll(".onsale-table-item");
    for (let i = 0; i < sellings.length; i++) {
      const selling = sellings[i];
      if (!selling)
        return;
      const row = selling.getElementsByClassName("row");
      if (row.length === 0)
        return;
      const node4 = row[0].children[3];
      if (!node4)
        continue;
      node4.insertAdjacentHTML("beforeend", renderChatButton({
        style: "width: 100%"
      }));
    }
  }
  function initFunc() {
    const btns = document.querySelectorAll(".needrun-chat-btn");
    for (let i = 0; i < btns.length; i++) {
      const btn = btns[i];
      btn.addEventListener("click", async () => {
        const parentNode = btn.parentElement.parentElement;
        const cardId = parentNode.getElementsByClassName("item-card")[0].getAttribute("cardid");
        if (cardId && cardId !== "") {
          showMessage("数据请求中,请稍等...", "info");
          let detail = await apiGetC5GoodsDetail(cardId);
          if (!detail.success) {
            showMessage("数据获取失败,请重试", "error");
            return;
          }
          showMessage("数据获取完毕", "success");
          const {
            data
          } = detail;
          const goodsInfo = {
            goodsName: data.name,
            inspectImg: data.inspectImage && data.inspectImage !== "" ? data.inspectImage : data.imageUrl,
            paintIndex: data.assetInfo.paintIndex ? Number(data.assetInfo.paintIndex) : 0,
            paintSeed: data.assetInfo.paintSeed ? Number(data.assetInfo.paintSeed) : 0,
            paintWear: data.assetInfo.wear,
            platform: 3
          };
          openPage(getNeedRunUrlByGoodsInfo(goodsInfo));
        }
      });
    }
  }
  const ChatButton = {
    init: init$1
  };
  function initPkg() {
    let count = 0;
    let timer = setInterval(() => {
      if (document.getElementsByClassName("item-card").length > 0) {
        clearInterval(timer);
        ChatButton.init();
      }
      count++;
      if (count > 200)
        clearInterval(timer);
    }, 300);
  }
  function init() {
    initPkg();
  }
  const c5 = {
    init
  };
  const pages = {
    // www,
    buff,
    youpin,
    igxe,
    c5
  };
  function initRouter() {
    const url = location.href;
    if (url.includes("buff"))
      pages.buff.init();
    if (url.includes("youpin"))
      pages.youpin.init();
    if (url.includes("igxe"))
      pages.igxe.init();
    if (url.includes("c5game"))
      pages.c5.init();
  }
  const index = "";
  const Notice = "";
  initRouter();
})();