[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.4
// @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(html => {
        const tempElement = document.createElement('div');
        tempElement.innerHTML = html;
        const petList = tempElement.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或关注我们的公众号极客氢云获取最新地址