[GC] - Underwater Fishing Data Logger

Fishing rewards logging.

目前为 2024-02-13 提交的版本。查看 最新版本

// ==UserScript==
// @name        [GC] - Underwater Fishing Data Logger
// @namespace   Grundo's Cafe
// @match       https://www.grundos.cafe/water/fishing/
// @require     https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
// @version     1.2.3
// @license     MIT
// @author      Cupkait
// @icon        https://i.imgur.com/4Hm2e6z.png
// @description Fishing rewards logging.
// ==/UserScript==

const getPetLevelsAsync = fetch("/quickref/")
  .then((response) => {
    if (!response.ok) {
      throw new Error(`Network response was not ok: ${response.statusText}`);
    }
    return response.text();
  })
  .then(async (html) => {
    const node = await new DOMParser().parseFromString(html, "text/html");
    const pageEventElement = node.getElementById("page_event");

    //Credit to Twiggies and Devi for the RE handle portion of this code!
    if (pageEventElement.innerHTML.trim() !== "") {
      const existingPageEvent = document.getElementById("page_event");
      existingPageEvent.innerHTML += pageEventElement.innerHTML;
    }

    return node;
  })
  .catch((error) => {
    // Handle errors here
    console.error("Error:", error);
  })

  .then((node) => {
    const petList = node.querySelector("#quickref_petlist").children;

    const petLevels = {};

    $(petList).each(function () {
      const petrefName = $(this)
        .find("a")
        .eq(0)
        .attr("href")
        .match(/_name=(.*?)$/)[1];
      const petFishingLevel = $(this)
        .find("span")
        .eq(12)
        .text()
        .match(/Fishing : (.*?)$/)[1];
      petLevels[petrefName] = petFishingLevel;
    });

    return petLevels;
  })
  .catch((error) => {
    console.error(error);
  });

let confirmResults = document.createElement("div");
confirmResults.innerHTML = "Pending...";
confirmResults.id = "confirmResults";
confirmResults.style.cssText =
  "color: green; text-align: center; link-color:green; font-size:14px; font-weight:bold;";
let getAvatar = " ";

getPetLevelsAsync.then((petLevels) => {
  const fishContent = document.querySelector("div#page_content > main");
  const welcomeText = fishContent.children[1].innerText;
  const patientText = fishContent.children[2].innerText;
  const petCount = document.querySelectorAll("main > div > div");
  const petName = document.querySelector("div#userinfo > a").href;
  let opts = {
    mode: "no-cors",
    referrer: "no-referrer",
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  };

  function avatarCheck() {
    const avatarContainer = document.querySelector("div#page_event");
    if (
      !avatarContainer.innerText.includes("Let's Get This Bread") &&
      !avatarContainer.innerText.includes("Fishing - Titanic Squid")
    ) {
      getAvatar = "";
      console.log("No avatar detected.");
    } else {
      console.log("Avatar detected.");
      if (avatarContainer.innerText.includes("Fishing - Titanic Squid")) {
        getAvatar = "Skeith - Fishing - Titanic Squid";
      } else if (avatarContainer.innerText.includes("Let's Get This Bread")) {
        getAvatar = "Let's Get This Bread";
      }
      console.log(`Avatar:`, getAvatar);
    }
  }


  if (
    (welcomeText.startsWith("Welcome to the") ||
      patientText.startsWith("Nothing!") ||
      patientText.startsWith("Looks like")) ) {
    console.log("Nothing to log here... it looks like no one went fishing.");
  } else {
    if (petCount.length === 0) {
      // One Pet
      const content = $("#page_content");
      const userName = /user=(.*?)"/g.exec(document.body.innerHTML)[1];
      const petName = $("#userinfo a").eq(2).text();
      const coolDown = content.find("strong").eq(0).text();
      const itemName = fishContent.querySelector("img").alt;

      let petLevel = petLevels[petName] || " ";
      let levelUp = "";

      try {
        levelUp = content
          .find("p")
          .eq(2)
          .text()
          .match(/to (.*?)!/)[1];
        petLevel = !isNaN(levelUp) ? parseInt(levelUp, 10) - 1 : petLevel;
      } catch (error) {
        // DO NOTHING
      }
      fishContent.insertAdjacentElement("beforebegin", confirmResults);
      confirmResults.innerHTML = `Your fishing results have been <a href="https://lookerstudio.google.com/reporting/ec18c798-ee62-4a7d-8315-5569c8de5ef6" target="_blank">submitted</a>.`;
      const logResponse = `https://docs.google.com/forms/d/e/1FAIpQLSdBhJS1NSxHCmy32BqH0DEdQRJci1IVPOWUFcaothsiZjXu-w/formResponse?usp=pp_url&entry.886049257=${userName}&entry.343654154=${petName}&entry.1922136733=${petLevel}&entry.693447328=${levelUp}&entry.881968876=${itemName}&entry.303510013=${coolDown}&entry.1110645895=${getAvatar}`;
      fetch(logResponse, opts);
    } else {
      $(".flex.center-items.big-gap").each(function () {
        const userName = /user=(.*?)"/g.exec(document.body.innerHTML)[1];
        const petName = $(this).find("strong").eq(0).text();
        const itemURL = $(this).find("img").eq(1).attr("src");
        const coolDown = $(this).find("strong").eq(1).text();
        const itemName = $(this)
          .find("p")
          .eq(0)
          .text()
          .match(/ a (.*?)!/)[1];

        let petLevel = petLevels[petName] || "";
        let levelUp = "";

        try {
          levelUp = $(this)
            .find("p")
            .eq(1)
            .text()
            .match(/to (.*?)!/)[1];
          petLevel = !isNaN(levelUp) ? parseInt(levelUp, 10) - 1 : petLevel;
        } catch (error) {
          // DO NOTHING
        }
        fishContent.insertAdjacentElement("beforebegin", confirmResults);
        confirmResults.innerHTML = `Your fishing results have been <a href="https://lookerstudio.google.com/reporting/ec18c798-ee62-4a7d-8315-5569c8de5ef6" target="_blank">submitted</a>.`;
        const logResponse = `https://docs.google.com/forms/d/e/1FAIpQLSdBhJS1NSxHCmy32BqH0DEdQRJci1IVPOWUFcaothsiZjXu-w/formResponse?usp=pp_url&entry.886049257=${userName}&entry.343654154=${petName}&entry.1922136733=${petLevel}&entry.693447328=${levelUp}&entry.881968876=${itemName}&entry.303510013=${coolDown}&entry.1110645895=${getAvatar}`;
        fetch(logResponse, opts);
      });
    }
  }
});

QingJ © 2025

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