keyjoker半自动任务(伪)

keyjoker半自动任务,修改自https://greasyfork.org/zh-CN/scripts/383411,部分操作需手动辅助

目前為 2020-07-10 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         keyjoker半自动任务(伪)
// @namespace    https://greasyfork.org/zh-CN/scripts/406476
// @version      0.3.6
// @description  keyjoker半自动任务,修改自https://greasyfork.org/zh-CN/scripts/383411,部分操作需手动辅助
// @author       祭夜
// @include      *://www.keyjoker.com/entries*
// @include      *.hcaptcha.com/*
// @include      *://steamcommunity.com/profiles/*?type=keyjoker
// @include      *://steamcommunity.com/groups/*
// @include      *://discord.com/invite/*
// @include      *://twitter.com/*
// @include      *://open.spotify.com/album/*
// @include      *?type=keyjoker
// @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
// @require      https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js
// ==/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);
                            }
                        });
                        // 新窗口打开任务链接(免跳转)
                        for(var i = 0; i < data.actions.length; i++)
                        {
                            console.log(data.actions[i]);
                            window.open(data.actions[i].data.url + "?type=keyjoker");
                        }
                        // 重载任务列表
                        document.getElementsByClassName("row")[1].parentNode.removeChild(document.getElementsByClassName("row")[1]);
                        $('.layout-container').append('<entries-component></entries-component>');
                        $.getScript("/js/app.js");
                        // 检查任务是否完成
                        let checkComplete=setInterval(()=>{
                            if(document.getElementsByClassName("card mb-4 list-complete-item").length == 0){
                                // 停止检查操作
                                clearInterval(checkComplete);
                                // 重新开始检查任务
                                setTimeout(()=>{
                                    reLoad(time,0);
                                },time);
                            }else
                            {
                                if(GM_getValue("autoRedeem"))
                                {
                                    func.redeem();
                                }
                            }
                        },10000);
                    }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);
        }
    }
    const func = {
        redeem: function(){
            var elem = document.getElementsByClassName("col-md-12")[1].getElementsByTagName("button");
            for(var i = 0; i < elem.length; i++)
            {
                if(typeof elem[i] != "undefined")
                {
                    elem[i].click();
                }
            }
        },
        hcaptcha: function () {
            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();
                        let checkClose=setInterval(()=>{
                            if(document.getElementsByTagName('span')[0].innerText == "Cookie set.")
                            {
                                console.log("Cookie set");
                                window.close();
                                clearInterval(checkClose);
                            }
                        }, 1000);
                        clearInterval(hcaptchaClick);
                    }
                }
            },1000);
        },
        hcaptcha2: function () {
            let hcaptcha2Click=setInterval(()=>{
                if(document.getElementsByClassName("challenge-container")[0].children.length != 0)
                {
                    console.log("open hcaptcha");
                    window.open("https://dashboard.hcaptcha.com/welcome_accessibility");
                    clearInterval(hcaptcha2Click);
                }
            },1000);
        },
        twitch: function () {
            if(document.referrer.indexOf("keyjoker") != -1)
            {
                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);
            }
        },
        steamcommunity: function () {
            if(document.referrer.indexOf("keyjoker") != -1)
            {
                // 来源keyjoker
                switch(location.pathname.split("/")[1])
                {
                    case "groups":
                        // 加组
                        {
                            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;
                    case "profiles":
                        // 评论
                        {
                            let profileClick=setInterval(()=>{
                                if(document.getElementsByClassName("commentthread_entry_quotebox").length == 1 && document.getElementsByClassName("commentthread_comments")[0].innerText.indexOf(document.getElementById("account_pulldown").innerText) != -1)
                                {
                                    document.getElementsByClassName("commentthread_entry_quotebox")[0].firstElementChild.value="+rep";
                                    document.getElementsByClassName("commentthread_entry_submitlink")[0].getElementsByClassName("btn_green_white_innerfade btn_small")[0].click();
                                    clearInterval(profileClick);
                                }
                            }, 1000);
                        }
                        break;
                    default :
                        break;
                }
            }
        },
        twitterRetweet: function(){
            if(document.referrer.indexOf("keyjoker") != -1)
            {
                let twitterClick=setInterval(()=>{
                    if(document.getElementsByTagName("article").length > 0)
                    {
                        console.log("Retweet");
                        $('div[data-testid="retweet"]')[0].click();
                        $('div[data-testid="retweetConfirm"]').click();
                        clearInterval(twitterClick);
                        let twitterClose=setInterval(()=>{
                            console.log(jQuery('div[data-testid="placementTracking"]').length + "--" + jQuery('div[data-testid="placementTracking"]')[0].innerText);
                            if($('div[data-testid="unretweet"]').length>0)
                            {
                                window.close();
                                clearInterval(twitterClose);
                            }
                        },1000);
                    }
                },1000);
            }
        },
        twitterFollow: function(){
            console.log("执行twitterFollow");
            let twitterClick=setInterval(()=>{
                if($('div[data-testid="placementTracking"]').length > 0)
                {
                    $('div[data-testid="placementTracking"]')[0].children[0].children[0].click();
                    clearInterval(twitterClick);
                    let twitterClose=setInterval(()=>{
                        console.log(jQuery('div[data-testid="placementTracking"]').length + "--" + jQuery('div[data-testid="placementTracking"]')[0].innerText);
                        if(jQuery('div[data-testid="placementTracking"]').length == 1 && jQuery('div[data-testid="placementTracking"]')[0].innerText == "正在关注")
                        {
                            window.close();
                            clearInterval(twitterClose);
                        }
                    },1000);
                }
            },1000);
        },
        discord: function(){
            let discordClick=setInterval(()=>{
                if(document.getElementsByTagName("button").length == 1 && document.getElementsByTagName("button")[0].innerText == "接受邀请")
                {
                    document.getElementsByTagName("button")[0].click();
                    clearInterval(discordClick);
                }
            },1000);
        },
        spotify: function(){
            let spotifyClick=setInterval(()=>{
                if(document.getElementsByClassName("spoticon-heart-32").length == 1)
                {
                    document.getElementsByClassName("spoticon-heart-32")[0].click();
                    clearInterval(spotifyClick);
                }
            },1000);
        }
    }
    function appHandle(){
        switch(location.hostname)
        {
            case "dashboard.hcaptcha.com":
                // hcaptcha 登录、设置Cookie
                func.hcaptcha();
                break;
            case "store.steampowered.com":
                // Steam 添加愿望单
                if(document.referrer.indexOf("keyjoker") != -1)
                {
                    document.getElementById("add_to_wishlist_area").lastElementChild.click();
                }
                break;
            case "www.twitch.tv":
                // twitch关注
                func.twitch();
                break;
            case "steamcommunity.com":
                // Steam 回复“+rep”
                func.steamcommunity();
                break;
            case "twitter.com":
                // retweet
                func.twitterRetweet();
                func.twitterFollow();
                break;
            case "discord.com":
                // Discord
                func.discord();
                break;
            case "open.spotify.com":
                // spotify
                func.spotify();
                break;
            case "assets.hcaptcha.com":
                // 人机验证
                func.hcaptcha2();
                break;
            default :
                break;
        }
    }
    console.log("load in " + location.hostname);
    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 if(location.href == "https://www.keyjoker.com/entries")
    {
        console.log("keyjoker页面!");
        if(document.getElementsByClassName("nav-item active")[0].innerText == "Earn Credits")
        {
            let isStart=setInterval(()=>{
                if(GM_getValue("start")==1){
                    clearInterval(isStart);
                    next();
                }
            },1000);
        }
    }else{
        console.log("appHandle");
        appHandle();
    }
    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+" 停止执行新任务检测");
    });
    GM_registerMenuCommand("开启自动redeem",()=>{
        GM_setValue("autoRedeem",1);
    });
    GM_registerMenuCommand("关闭自动redeem",()=>{
        GM_setValue("autoRedeem",0);
    });
})();