京东养猪

京东养猪: 签到、捡饲料、喂食

目前為 2020-03-16 提交的版本,檢視 最新版本

// ==UserScript==
// @name         京东养猪
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  京东养猪: 签到、捡饲料、喂食
// @author       bob
// @match        https://uua.jr.jd.com/*
// @grant        none
// ==/UserScript==

// 
const jdyzUrl = 'https://uua.jr.jd.com/uc-fe-wxgrowing/cloudpig/index/home/20191030/158432123100870350/?channelLV=qdy&shareId=vZoq-O6FkuUp62HuKheuTcAdoUJQ3Dik&sourceID=240&actflag=1AEE706F1D&isPay=N&utm_source=Android%2aurl%2a1584321232229&utm_medium=jrappshare&utm_term=qqfriends';
// 捡礼物盒周期
const pickInterval = 3000;
var checkPickFoodTask = null;
var pickFoodTask = null;

(function() {
    'use strict';
    // Your code here...
    // 签到
    function signIn () {
        console.log('签到')
        // 打开签到
        document.getElementsByClassName("main-icon main-icon-sign")[0].click();
        setTimeout(() => {
            // 签到
            var signBtn = document.getElementsByClassName("sign-btn");
            if (signBtn && signBtn[0]) {
                signBtn[0].click();
            }
            // 关闭签到
            var closeBtn = document.getElementsByClassName("sign-close")
            if (closeBtn && closeBtn[0]) {
                closeBtn[0].click();
            }
            closeBtn = document.getElementsByClassName("precious-btn")
            if (closeBtn && closeBtn[0]) {
                closeBtn[0].click();
            }
        }, 1000);
    }

    // 捡猪饲料
    function pickFood () {
        console.log('开始捡猪饲料');
        if (pickFoodTask) {
            return;
        }
        pickFoodTask = setInterval(() => {
            var box1 = document.getElementsByClassName("precious precious-one precious-pos-1 springback")[0];
            if (box1) {
                box1.click();
            } else {
                var box2 = document.getElementsByClassName("precious precious-one precious-pos-2 springback")[0];
                if (box2) {
                    box2.click();
                }
            }
        }, pickInterval);
    }

    // 停止捡饲料
    function stopPickFood () {
        console.log('停止捡饲料')
        if (pickFoodTask) {
            clearInterval(pickFoodTask);
        }
    }

    // 添加食物
    function addFood () {
        console.log('开始喂食')
        // 打开饲料仓库
        document.getElementsByClassName("draw-trough-img")[0].click();
        // 饲料详情
        var foodItems = document.getElementsByClassName("feed-item-desc");
        var foodCounts = new Array();
        for (var i=0; i<foodItems.length; i++) {
            var count = foodItems[i].childNodes[1].innerText;
            foodCounts.push({"index": i, "count": count});
        }
        // 饲料按余量降序
        foodCounts.sort((a, b) => {
            return b.count - a.count;
        });
        // 取最大余量喂食
        var index = foodCounts[0].index;
        document.getElementsByClassName("feed-item-btn")[index].click();
        // 关闭饲料仓库
        document.getElementsByClassName("feed-close")[0].click();
    }

    // 是否需要喂食
    function isNeedFood () {
        // 剩余时间 mm:hh:ss 格式
        var residue = document.getElementsByClassName("draw-feed-time")[0].innerText;
        return !/\d{2}:\d{2}:\d{2}/.test(residue);
    }

    // 协调喂食和捡饲料
    function checkAndAddFood () {
        // 每1分钟检查一次
        setInterval(() => {
            if (isNeedFood()) {
                stopPickFood();
                addFood();
                pickFood();
            } else {
                console.log('不需要喂食')
            }
        }, 60*1000);
    }

    // 检查是否已没新饲料,并停止捡饲料
    function checkAndStopPickFood () {
        // 每一分钟检查
        checkPickFoodTask = setInterval(() => {
            var disableFood = document.getElementsByClassName("main-precious-disable")[0]
            if (disableFood) {
                stopPickFood();
                clearInterval(checkPickFoodTask);
            }
        }, 60*1000);
    }

    setTimeout(() => {
        console.log('开始搞事情')
        signIn();
        pickFood();
        checkAndAddFood();
        checkAndStopPickFood();
    }, 3000);
})();