京东养猪

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

当前为 2020-03-16 提交的版本,查看 最新版本

// ==UserScript==
// @name         京东养猪
// @namespace    http://tampermonkey.net/
// @version      0.3.4
// @description  京东养猪: 签到、捡饲料、喂食
// @description  京东金融: 自动领取京东豆
// @author       bob
// @match        https://uua.jr.jd.com/*
// @match        https://jddx.jd.com/*
// @match        https://vip.m.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 clickByClassName (className) {
        var btn = document.getElementsByClassName(className)
        if (btn && btn[0]) {
            btn[0].click();
            return true;
        }
        return false;
    }

    // 京东金融:摇一摇领取京东豆
    if (/https:\/\/vip.m.jd.com\/newPage\/reward\/reward/.test(window.location.href)) {
        console.log('sdfsdfsdfsdfsdfsdfwefwefwe')
        setTimeout(() => {
            var btn = document.getElementsByClassName('rewardBoxBot J_ping');
            if (btn && btn[0]) {
                if (btn[0].innerHTML.indexOf('花费') >= 0) {
                    console.log('需要花费,跳过领取')
                    alert('需要花费,跳过领取,即将关闭窗口')
                    window.close();
                }
            }

            console.log('领取摇一摇的京东豆');
            var result = clickByClassName('rewardBoxBot J_ping');
            if (result) {
                clickByClassName('rewardBtn J_ping');
            }
            alert('领取完成,即将关闭窗口');
            window.close();
        }, 5000)
    }

    // 领取种草的阅读文章
    if (/https:\/\/jddx.jd.com\/m\/jddnew\/discovery\/0.html*/.test(window.location.href)) {
        console.log('开始阅读种草文章');
        function load () {
            var jddUrls = new Array();
            var targets = document.getElementsByClassName('essay-holder');
            // 一个连接含有 'essay-holder' 这样两个标签,从标签中解析出url参数
            var p1 = targets[0].getAttribute('clstag'); // jr|keycount|jiandandian_0305|faxianpage_neirong_info_8582799
            p1 = p1.substr(p1.lastIndexOf('_')); // 得到 8582799
            jddUrls.push(`https://jddx.jd.com/m/jdd/index.html?id=${p1}`);

            var p2 = targets[2].getAttribute('clstag');
            p2 = p2.substr(p2.lastIndexOf('_'));
            jddUrls.push(`https://jddx.jd.com/m/jdd/index.html?id=${p2}`);

            var p3 = targets[4].getAttribute('clstag');
            p3 = p3.substr(p3.lastIndexOf('_'));
            jddUrls.push(`https://jddx.jd.com/m/jdd/index.html?id=${p3}`);

            jddUrls.forEach(url => {
                console.log(url)
                var aTag = document.createElement('a');
                aTag.href = url
                aTag.target = '_blank'
                aTag.click();
//                 window.open(url);
            });
        }
        document.onload = load();
/*         document.onload = () => {
        } */
    }

    // 京东金融自动领取京东豆
    if (/jddx.jd.com/.test(window.location.host)) {
        setInterval(() => {
            var iTags = document.getElementsByTagName('i');
            console.log('查询标签' + iTags.length)
            for (var i=0; i<iTags.length; i++) {
                console.log(iTags[i].innerHTML)
                if ('领取' === iTags[i].innerHTML) {
                    console.log('点击领取');
                    iTags[i].click();
                    window.close();
                }
            }
        }, 3000)
    }

    // 京东赚钱领取任务
    if (/https:\/\/jddx.jd.com\/m\/jddnew\/money\/index.html/.test(window.location.href)) {
        var isSigned = clickByClassName('item-icon today');
        if (isSigned) {
            clickByClassName('jr-popup-close');
        }
        var slideImgs = document.getElementsByClassName('slide-img')
        for (var i=0; i<slideImgs.length; i++) {
            if ('https://img30.360buyimg.com/cf/jfs/t1/99385/33/74/62650/5da6dbc6E2275e68c/23076bb1f36806fa.jpg' === slideImgs[i].src) {
                slideImgs[i].click();
            }
        }
    }

    // 京东养猪
    if (/uua.jr.jd.com/.test(window.location.host)) {
        // 签到
        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();
            setTimeout(() => {
                // 饲料详情
                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();
            }, 1000);
        }

        // 是否需要喂食
        function isNeedFood () {
            var needBtn = document.getElementsByClassName("draw-feed-btn")
            if (needBtn && needBtn[0]) {
                return true;
            }
            // 剩余时间 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);
    }
    
})();