RamisAmuki Utils

RamisAmuki Utils.

目前為 2023-07-29 提交的版本,檢視 最新版本

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.gf.qytechs.cn/scripts/469263/1227506/RamisAmuki%20Utils.js

// ==UserScript==
// @name         RamisAmuki Utils
// @description  RamisAmuki Utils.
// @author       RamisAmuki
// @version      0.1.1
// @grant        none
// ==/UserScript==

function check_rate_price(liqs, querys) {
  const li_rate_node = liqs(querys.rate);
  const li_rate = li_rate_node != null ? parseInt(li_rate_node.innerText) : 0;
  const li_price = parseInt(liqs(querys.price).innerText.replace(",", ""));
  let base_rate = Number(localStorage.getItem("rate-input") || 90);
  let base_price = Number(localStorage.getItem("price-input") || 100);
  return [li_rate < base_rate, li_price > base_price].every((b) => b);
}

function disabling(li) {
  li.style.display = "none";
}

function filter(checker, querys) {
  document
    .querySelectorAll(querys.lists)
    .forEach((li) => checker((q) => li.querySelector(q)) && disabling(li));
}

function appendFilterButton(
  checker,
  querys,
  margin = null,
  innerHTML = "Filter",
  float = "right",
  height = "30px",
  color = "#000",
  backgroundColor = "#f6dbae"
) {
  // ボタン要素を作成
  let btn = document.createElement("button");

  // ボタンを装飾
  btn.innerHTML = innerHTML;
  btn.style.float = float;
  btn.style.height = height;
  btn.style.color = color;
  btn.style.backgroundColor = backgroundColor;
  if (margin != null) btn.style.margin = margin;

  // 実行する関数
  btn.onclick = () => filter(checker, querys);

  // ボタンを追加
  document.querySelector(querys.button_parent).appendChild(btn);
}

function appendRatePriceInput(querys) {
  rate_input = document.createElement("input");
  rate_input.type = "number";
  rate_input.id = "rate" + "-input";
  rate_input.max = 99;
  rate_input.min = 0;
  rate_input.step = 1;
  rate_input.value = localStorage.getItem(rate_input.id) || 90; // nullだった場合、初期値にする
  rate_input.onchange = () => {
    localStorage.setItem(rate_input.id, rate_input.value);
  };

  rate_label = document.createElement("label");
  rate_label.for = rate_input.id;
  rate_label.style.fontSize = "13px";
  rate_label.innerText = "rate : ";
  document.querySelector(querys.button_parent).appendChild(rate_label);
  rate_label.appendChild(rate_input);

  price_input = document.createElement("input");
  price_input.type = "number";
  price_input.id = "price" + "-input";
  price_input.min = 1;
  price_input.step = 1;
  price_input.value = localStorage.getItem(price_input.id) || 100;
  price_input.onchange = () => {
    localStorage.setItem(price_input.id, price_input.value);
  };

  price_label = document.createElement("label");
  price_label.for = price_input.id;
  price_label.style.fontSize = "13px";
  price_label.innerText = "price : ";
  document.querySelector(querys.button_parent).appendChild(price_label);
  price_label.appendChild(rate_input);
}

function waitForElement(selector, callback, intervalMs, timeoutMs) {
  const startTimeInMs = Date.now();
  findLoop();

  function findLoop() {
    if (document.querySelector(selector) != null) {
      callback();
      return;
    } else {
      setTimeout(() => {
        if (timeoutMs && Date.now() - startTimeInMs > timeoutMs) return;
        findLoop();
      }, intervalMs);
    }
  }
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址