keyjoker半自动任务(伪)

keyjoker半自动任务,修改自<a href="https://greasyfork.org/zh-CN/scripts/383411-keyjoker%E6%96%B0%E4%BB%BB%E5%8A%A1%E6%A3%80%E6%B5%8B">keyjoker新任务检测</a>部分操作需手动辅助

当前为 2020-07-04 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         keyjoker半自动任务(伪)
// @namespace    https://greasyfork.org/zh-CN/scripts/406476
// @version      0.1
// @description  keyjoker半自动任务,修改自<a href="https://greasyfork.org/zh-CN/scripts/383411-keyjoker%E6%96%B0%E4%BB%BB%E5%8A%A1%E6%A3%80%E6%B5%8B">keyjoker新任务检测</a>部分操作需手动辅助
// @author       祭夜
// @include      *://www.keyjoker.com/entries
// @include      *://dashboard.hcaptcha.com/*
// @include      *?type=keyjoker
// @include      *://steamcommunity.com/groups/*
// @supportURL   https://www.jysafe.cn/
// @homepage     https://www.jysafe.cn/
// @run-at       document-end
// @grant        GM_registerMenuCommand
// @grant        GM_addStyle
// @grant        GM_xmlhttpRequest
// @grant        GM_setClipboard
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_openInTab
// @grant        GM_log
// @require      https://greasyfork.org/scripts/379868-jquery-not/code/jQuery%20not%20$.js?version=700787
// ==/UserScript==

(function() {
    'use strict';

    function reLoad(time,sum){
        let date=new Date();
        let hour=date.getHours();
        let min=date.getMinutes()<10?("0"+date.getMinutes()):date.getMinutes();
        if(GM_getValue("start")==1){
            $(".border-bottom").text(hour+":"+min+" 执行新任务检测");
            $.ajax({
                url:"/entries/load",
                type:"get",
                headers:{'x-csrf-token': $('meta[name="csrf-token"]').attr('content')},
                success:(data)=>{
                    if(data && (data.actions && (data.actions.length > sum) )){
                        console.log(data);
                        let date=new Date();
                        let hour=date.getHours();
                        let min=date.getMinutes()<10?("0"+date.getMinutes()):date.getMinutes();
                        $(".border-bottom").text(hour+":"+min+" 检测到新任务");
                        $show({
                            title:"keyjoker新任务",
                            msg:"keyjoker网站更新"+(data.actions.length-sum)+"个新任务!",
                            icon:"https://www.keyjoker.com/favicon-32x32.png",
                            time:0,
                            onclick:function(){
                                location.reload(true);
                            }
                        });
                        // 重载任务列表
                        document.getElementsByClassName("row")[1].parentNode.removeChild(document.getElementsByClassName("row")[1]);
                        $('.layout-container').append('<entries-component></entries-component>');
                        $.getScript("/js/app.js");
                        // 新窗口打开任务链接(免跳转)
                        for(var i = 0; i < data.actions.length; i++)
                        {
                            console.log(data.actions[i]);
                            window.open(data.actions[i].data.url + "?type=keyjoker");
                        }
                    }else{
                        setTimeout(()=>{
                            reLoad(time,sum);
                        },time);
                    }
                },
                error:(err)=>{
                    window.location.reload(true);
                }
            });
        }
    }
    function setTime(){
        let time=prompt('请输入获取任务信息的时间间隔(单位:秒):');
        if(!isNaN(time)){
            GM_setValue("time",parseInt(time));
        }
    }
    function start(){
        $showTest();
        GM_setValue("start",1);
        let time=GM_getValue("time");
        if(!time){
            time=60;
        }
        if(confirm("是否以时间间隔"+time+"秒进行任务检测?")){
            next();
        }
    }
    function next(){
        let time=GM_getValue("time");
        if(!time){
            time=60;
        }
        let sum=$(".list-complete-item").length;
        if(sum>0){
            reLoad(time*1000,sum);
        }else{
            reLoad(time*1000,0);
        }
    }
    if(document.getElementsByClassName("cf-section cf-highlight cf-captcha-container").length != 0)
    {
        console.log("cf验证页面!");
    }else if(document.getElementById("logout-form") && location.search !== "")
    {
        location.href = location.pathname;
    }else
    {
        console.log("正常页面!");
        let isStart=setInterval(()=>{
            if(GM_getValue("start")==1){
                clearInterval(isStart);
                next();
            }
        },1000);
    }
    switch(location.hostname)
    {
        case "dashboard.hcaptcha.com":
            {
                let hcaptchaClick=setInterval(()=>{
                    console.log("hCaptcha");
                    if(document.getElementsByTagName('button').length == 1)
                    {
                        if(document.getElementsByTagName('button')[0].innerText == "Login")
                        {
                            console.log("Login");
                            document.getElementsByTagName('button')[0].click();
                        }else if(document.getElementsByTagName('button')[0].innerText == "Set Cookie"){
                            console.log("Set Cookie");
                            document.getElementsByTagName('button')[0].click();
                            clearInterval(hcaptchaClick);
                        }
                    }
                },1000);
            }
            break;
        case "store.steampowered.com":
            document.getElementById("add_to_wishlist_area").lastElementChild.click();
            break;
        case "www.twitch.tv":
            {
                let twitchClick=setInterval(()=>{
                    if(document.getElementsByClassName("follow-btn__follow-btn").length == 1)
                    {
                        document.getElementsByClassName("follow-btn__follow-btn")[0].getElementsByTagName("button")[0].click();
                        clearInterval(twitchClick);
                    }
                }, 1000);
            }
            break;
        case "steamcommunity.com":
            if(document.referrer == "https://www.keyjoker.com/")
            {
                let steamClick=setInterval(()=>{
                    if(document.getElementsByClassName("grouppage_join_area").length == 1)
                    {
                        document.getElementsByClassName("grouppage_join_area")[0].getElementsByTagName("a")[0].click();
                        clearInterval(steamClick);
                    }
                }, 1000);
            }
            break;
        default :
            break;
    }
    GM_registerMenuCommand("设置时间间隔",setTime);
    GM_registerMenuCommand("开始检测",start);
    GM_registerMenuCommand("停止检测",()=>{
        let date=new Date();
        let hour=date.getHours();
        let min=date.getMinutes()<10?("0"+date.getMinutes()):date.getMinutes();
        GM_setValue("start",0);
        $(".border-bottom").text(hour+":"+min+" 停止执行新任务检测");
    });
})();