Greasy Fork 支持简体中文。

签到

签到!

// ==UserScript==
// @name         签到
// @namespace    https://www.yge.me/
// @version      0.1
// @description  签到!
// @author       Y.A.K.E
// @include			http://*
// @include			https://*
// @include			ftp://*
// @grant          GM_getValue
// @grant          GM_setValue
// @grant          GM_deleteValue
// @grant          GM_xmlhttpRequest
// @grant          unsafeWindow
// ==/UserScript==

(function() {
    'use strict';


    //1,设置定时器.
    var localTimerId = setInterval(function(){

        //  当前定时器是否为主任务进程
        var isWorkTimer = false;



        //1.1读本地存储
        var testTimer = GM_getValue('localTestTimer');
        if (typeof(testTimer) != undefined){
            if (typeof(testTimer.timerId) != undefined){console.log(testTimer.timerId);}//存储的主任务的定时器Id
            if (typeof(testTimer.time) != undefined){console.log(testTimer.time);}//存储的主任务最后记录的unix时间
        }



        //1.2读当前unix时间戳
        var localDate = new Date();
        var unixTime = Math.round(localDate.getTime()/1000);



        //1.3 组合一个写入对象
        var inVal = {
            'timerId' : localTimerId,
            'time' : unixTime
        }

        //1.4
        //如果当前定时器Id和存储的不是同一个,表示自己不是主任务
        //超过20秒,可能主任务进程翻车了.需要顶上去

        //完全没有记录的情况
        if(typeof(testTimer) == undefined){
                GM_setValue('localTestTimer', inVal);
                isWorkTimer = true;
                console.log("原来是空,现在变成主进程:");
                console.log(inVal);
        }else{

            //有记录的情况

            if (testTimer.timerId == localTimerId){
                //工作timer进程
                GM_setValue('localTestTimer', inVal);
                isWorkTimer = true;

                console.log("是主进程:");
                console.log(inVal);

            }else if(unixTime - testTimer.time > 20 ){
                //非工作timer进程,但是检测工作主任务最后一次工作时间为20秒前,怀疑翻车了.

                GM_setValue('localTestTimer', inVal);
                isWorkTimer = true;

                console.log("非主进程,顶上去:");
                console.log(inVal);
            }else{
                //其他情况,只需要保持定时器工作即可,以备接盘
            }
        }


        //1.5
        //如果是工作进程
        if (isWorkTimer){
          //todo,调用签到函数
        }








    }, 5000);


    // Your code here...
})();