旺旺UpUp

牛刀小试

Version vom 02.11.2024. Aktuellste Version

Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.greasyforks.org/scripts/515340/1476376/%E6%97%BA%E6%97%BAUpUp.js

// ==UserScript==
// @name         旺旺UpUp
// @namespace    http://tampermonkey.net/
// @version      3.5
// @description  牛刀小试
// @author       theCrazy-handsomeboy
// @match        https://ads.tiktok.com/i18n/*
// @grant        none
// ==/UserScript==



const makeBox=function () {
  "use strict";

  // check element
  const targetSelector = ".biz-right-bar";
  let successfulCount = 0;
  let intervalId;
  let codeTextArea = "";
  let runFlag = false;
  //---------- The Box ----------
  const popupContainer = document.createElement("div");
  popupContainer.id = "popupContainer";
  Object.assign(popupContainer.style, {
    position: "fixed", // Changed from "none" to "fixed"
    display: "none",
    justifyContent: "space-between",
    alignItems: "center",
    top: "90%",
    left: "230px",
    transform: "translate(-50%, -50%)",
    padding: "10px",
    backgroundColor: "white",
    boxShadow: "0 4px 8px rgba(0, 0, 0, 0.2)",
    zIndex: "1000",
    width: "380px",
    borderRadius: "8px",
  });

  popupContainer.innerHTML = `
    <div style="display:flex;justify-content: center;">
    <h4>Execution Count:${successfulCount}</h4>
    </div>
    <div style="display: flex;">
        <textarea id="CodeTextarea" rows="3" style="width: 200px; margin-bottom: 10px;margin-top:2px"></textarea>
        <div>
        <div>

        <button id="executeBtn" style="font-size: 15px; margin-left: 10px; cursor: pointer; width: 50px; height: 30px; margin-right: 10px; border: none; background-color: #5475e7; color: #fff;">run</button>
  </div>
  <div>
        <button id="stopBtn" style="margin-top:5px;font-size: 15px; width: 50px; margin-left: 10px;cursor: pointer; height: 30px; margin-right: 10px; border: none; background-color: #e75454; color: #fff;">stop</button>
       </div>
        </div>
       <div style="margin-right:10px;margin-left:10px">
           <div style="display: flex; justify-content: center; align-items: center;">
            <p>Count:</p>
            <input type="number" id="loopCount" min="1" value="10" style="cursor: pointer; width: 50px; font-size: 20px; border-radius: 5px; ">
            <button id="clearAll" style="margin-left: 10px;font-size: 15px; width: 60px; cursor: pointer; height: 30px; margin-right: 10px; border: none; background-color: #54e780; color: #fff;">clearAll</button>
       </div>
               <div style="display: flex; justify-content: center; align-items: center;margin-top:5px">
           <p>Timer:</p>
            <input type="number" id="timers" min="10" value="10" style="cursor: pointer; width: 50px; font-size: 20px; border-radius: 5px; ">
      <button id="closeBtn" style="margin-left: 10px;font-size: 15px; width: 60px; cursor: pointer; height: 30px; margin-right: 10px; border: none; background-color: #e7a754; color: #fff;">close</button>
 
       </div>
       
       </div>
           </div>
  `;

  // Box functions
  function addBox() {
    document.body.appendChild(popupContainer);
  }

  function hiddenBox() {
    popupContainer.style.display = "none"; // 隐藏 box 而不是删除
  }

  function showBox() {
    popupContainer.style.display = "block"; // 显示box
  }

  // Watching target Element
  const checkForElement = () => {
    const targetElement = document.querySelector(targetSelector);
    if (targetElement) {
      console.log("已出现");
      // addBox();
      observer.disconnect();
      addBox();
      targetElement.insertAdjacentHTML(
        "beforebegin",
        `<div id="customButton" style="margin-top: 30px; width:200px; cursor: pointer; color: gray; text-align: center;">_____</div>`
      );

      const button = document.getElementById("customButton");
      button.addEventListener("click", () => {
        if (
          document.getElementById("popupContainer") &&
          popupContainer.style.display === "block"
        ) {
          hiddenBox();
        } else if (
          document.getElementById("popupContainer") &&
          popupContainer.style.display === "none"
        ) {
          showBox();
        }
      });

      const executeBtn = document.getElementById("executeBtn");
      const stopBtn = document.getElementById("stopBtn");
      const closeBtn = document.getElementById("closeBtn");
      const clearAll = document.getElementById("clearAll");
      function clearTheInterval() {
        clearInterval(intervalId);
        runFlag = false;
        executeBtn.style.cursor = "pointer";
        popupContainer.querySelector('h4').innerText = `Execution Count:0`;
      }
      // Button function
      executeBtn.addEventListener("click", () => {
        codeTextArea = document.getElementById("CodeTextarea").value;
        let codeFunction = new Function(codeTextArea); // Use codeTextArea
        let executionCount = 0;
        const loopCount = parseInt(
          document.getElementById("loopCount").value,
          10
        );
        const loopTimer =
          parseInt(document.getElementById("timers").value, 10) * 1000;
        if (runFlag === true) {
          console.log("别重复");
          return 0;
        }
        runFlag = true;

        executeBtn.style.cursor = "not-allowed";
        intervalId = setInterval(() => {
          if (executionCount < loopCount) {
            try {
         
              codeFunction();
              successfulCount++;
              executionCount++;
             popupContainer.querySelector('h4').innerText = `Execution Count:${successfulCount}`;
            } catch (error) {
              console.error(`执行出错: ${error.message}`);
            }
          } else {
            clearTheInterval();
            alert("fetch执行已完成");
          }
        }, loopTimer); // Use getRandomTime() here
      });

      stopBtn.addEventListener("click", () => {
        clearTheInterval();
        alert("fetch已停止");
      });

      closeBtn.addEventListener("click", () => {
        hiddenBox(); // Hide the box
      });

      clearAll.addEventListener("click", () => {
        console.log("yes");
        clearTheInterval();
        alert("fetch已停止和清空");
        codeTextArea = ""; // 清空代码变量
        document.getElementById("CodeTextarea").value = ""; // 清空文本区域
    
      });
    }
  };

  // Run observer to watch for element
  const observer = new MutationObserver(checkForElement);

  // Start observing
  observer.observe(document.body, {
    childList: true,
    subtree: true, // Observe all child nodes
  });
}
长期地址
遇到问题?请前往 GitHub 提 Issues。