Greasy Fork

Greasy Fork is available in English.

斗鱼2024年12月钓鱼大赛自动操作脚本

自动检测斗鱼钓鱼活动按钮并进行相应点击操作,实现自动抛竿、收杆,在活动时间段(中午12:00到凌晨00:30每个准点开启半小时)内执行抛竿

当前为 2024-12-31 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        斗鱼2024年12月钓鱼大赛自动操作脚本
// @namespace   your_namespace_here
// @match       https://www.douyu.com/pages/fish-act/mine*
// @grant       none
// @version     1.0
// @description 自动检测斗鱼钓鱼活动按钮并进行相应点击操作,实现自动抛竿、收杆,在活动时间段(中午12:00到凌晨00:30每个准点开启半小时)内执行抛竿
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    function isActivityTime() {
        const now = new Date();
        const hour = now.getHours();
        const minute = now.getMinutes();

        // 判断是否在活动时间范围内(中午12:00到凌晨00:30每个准点开启半小时)
        return (hour >= 12 && hour < 24 && minute < 30) || (hour === 0 && minute < 30);
    }

    function simulateClick(element) {
        const clickEvent = new MouseEvent('click', {
            view: window,
            bubbles: true,
            cancelable: true
        });
        element.dispatchEvent(clickEvent);
    }
    const interval = 3000;
    function checkAndAct() {
        console.log(`每隔 ${interval/1000} 秒执行检测功能`);
        // 尝试查找并关闭提示弹窗
        const resultModal = document.querySelector('.CommonModal-modal.is-center.ManualFishResultModal');
        if (resultModal) {
            const closeBtn = resultModal.querySelector('div.btn');
            if (closeBtn) {
                simulateClick(closeBtn);
            }
        }

        const starterDiv = document.querySelector('.Starter');
        if (starterDiv) {
            const majorBtn = starterDiv.querySelector('.majorBtn');
            if (majorBtn) {
                const status = majorBtn.querySelector('.status');
                if (majorBtn.classList.contains('active')) {
                    const openFishingButton = majorBtn.querySelector('div.info > div.tips > p.tips.minor');
                    if (openFishingButton && openFishingButton.textContent.trim() === '开启钓鱼') {
                        const now = new Date();
                        const year = now.getFullYear();
                        const month = (now.getMonth() + 1).toString().padStart(2, '0');
                        const day = now.getDate().toString().padStart(2, '0');
                        const hour = now.getHours().toString().padStart(2, '0');
                        const minute = now.getMinutes().toString().padStart(2, '0');
                        const second = now.getSeconds().toString().padStart(2, '0');
                        const formattedTime = `${year}-${month}-${day} ${hour}:${minute}:${second}`;
                        if (isActivityTime()) {
                            console.log(`在大赛时间段内,目前时间为:${formattedTime}`);
                            console.log('点击抛竿');
                            simulateClick(openFishingButton);
                        }else{
                            console.log(`不在大赛时间段内,目前时间为:${formattedTime}`);
                        }
                    }
                } else if (majorBtn.classList.contains('finish')) {
                    const finishButton = majorBtn.querySelector('div.info > div.tips > p.tips.major');
                    if (finishButton && finishButton.textContent.trim() === '收竿') {
                        console.log('点击收竿');
                        simulateClick(finishButton);
                    }
                }
            }
        }
    }

    // 使用setInterval设置每隔3000毫秒(即3秒,你可以根据实际需求调整时间间隔)执行一次checkAndAct函数
    setInterval(checkAndAct, interval);

})();