GoobooObserver

Gooboo画廊刷现金

// ==UserScript==
// @name         GoobooObserver
// @namespace    http://tampermonkey.net/
// @version      1.1.0
// @description  Gooboo画廊刷现金
// @author       You
// @match        https://*/gooboo/
// @icon         https://tendsty.github.io/gooboo/favicon.ico
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
  "use strict";

  function getStore(item) {
    const store = localStorage.getItem('goobooObserver');
    return store ? JSON.parse(store)[item] : null;
  }
  function setStore(item, value) {
    const store = JSON.parse(localStorage.getItem('goobooObserver') || '{}');
    store[item] = value;
    localStorage.setItem('goobooObserver', JSON.stringify(store));
  }
  function isMobile() {
    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
  }

  let running = false, t = 0;
  let cycle = getStore('gallery_auto_cash_cycle') || 1; // 每次声望等待的时间,单位是秒
  function sleep(s) {
    return new Promise((resolve) => setTimeout(resolve, s * 1000));
  }
  function get_module() {
    return document.getElementsByClassName("primary")[0].__vue__.$store.state.system.screen;
  }
  function click(ele) {
    ele && ele.click();
  }
  async function auto_cash() {
    const cbtn = document.getElementById("auto_cash_stop");
    cbtn.classList.add("success");
    cbtn.classList.remove("error");
    t = 1;
    while (running) {
      if(get_module()==='gallery') {
        click(document.querySelectorAll(".mdi-gavel")[0]);
        await sleep(0.5);
        document.querySelectorAll(".flex-shrink-0.v-chip")[0] && click(document.querySelectorAll(".flex-shrink-0.v-chip")[0].nextSibling.nextSibling.nextSibling.nextSibling);
        await sleep(0.5);
        const confirm_dialog = document.querySelectorAll('.v-dialog.v-dialog--active')[0];
        confirm_dialog && click(confirm_dialog.querySelectorAll('.v-btn.success')[0]);
        click(document.querySelectorAll(".v-slide-group__content .mdi-image-frame")[0]);
        await sleep(1);
        const insp = parseInt((document.querySelectorAll('.currency-border .v-progress-linear__content span')[0]||{innerText:0}).innerText);
        const cash = document.querySelectorAll(".bg-tile-default .mdi-cash")[0] ? document.querySelectorAll(".bg-tile-default .mdi-cash")[0].parentNode.parentNode.parentNode:null;
        let tt = 0;
        while (cash && tt<insp) {
          cash.click();
          tt++;
        }
        await sleep(cycle);
        t++;
      } else {
        await sleep(1);
      }
    }
  }
  let auto_cash_icon = document.createElement('i');
  auto_cash_icon.classList = 'v-icon mx-2 mdi mdi-cash';
  let auto_cash_btn = document.createElement('button');
  auto_cash_btn.id = "auto_cash_stop";
  auto_cash_btn.classList = 'mx-2 v-btn v-btn--round v-btn--icon v-size--default error';
  auto_cash_btn.appendChild(auto_cash_icon);
  auto_cash_btn.addEventListener("click", function () {
    running = !running;
    if (running) {
      auto_cash();
    } else {
      const cbtn = document.getElementById("auto_cash_stop");
      cbtn.classList.remove("success");
      cbtn.classList.add("error");
    }
  });
  let setting_btn = document.createElement("button");
  setting_btn.innerText = '设置';
  setting_btn.classList = "v-btn v-btn--is-elevated v-btn--has-bg v-size--default";
  setting_btn.addEventListener("click", function () {
    const ans = parseInt(prompt('设置画廊现金循环间隔时间', getStore('gallery_auto_cash_cycle')));
    if(!ans) return;
    setStore('gallery_auto_cash_cycle', ans);
    cycle = ans;
  });
  const spacer = document.querySelectorAll(".spacer")[0];
  const parent = spacer.parentNode;
  parent.insertBefore(auto_cash_btn, spacer);
  !isMobile() && parent.insertBefore(setting_btn, spacer);
})();