请选择 进入手机版 | 继续访问电脑版

超星尔雅助手---终于可以自动答题了

fpschen 发表于 2018-9-29 19:55:24 | 显示全部楼层 [复制链接]
31 3358
chaox副本.png

超星尔雅刷课油猴脚本!破晓论坛首发!
脚本版本:1.1.7
功能:
  • 后台自动挂课(默认静音播放)
  • 自动答题(现在题库还没好,不过可以修改配置使用随缘答题)
  • 自动切换课程
  • 勇士专属:5秒一节课
更新日志:
  • 新增自动答题功能
  • 修复1.0.7版本所发现的bug,但仍有一定概率无法正常使用!
题库由站长提供!
特别感谢站长的大力支持!

当题库好的时候我会发在https://greasyfork.org

最新代码!


// ==UserScript==
// @icon            https://ss0.baidu.com/73t1bjeh1BF3odCf/it/u=3507160010,2121752339&fm=77&s=1947387E66836BF52423D3FB0300A01E
// @name                        超星尔雅助手
// @namespace       http://tampermonkey.net/
// @author                        fpschen
// @description                后台静音播放(默认静音),自动答题,课程自动切换,勇士特权:5秒内一节课
// @version                        1.1.7
// @match                        *://*.chaoxing.com/mycourse/*
// @requier         https://mooc1-1.chaoxing.com/js/build/jquery.js
// @supportURL      https://greasyfork.org/zh-CN/scripts/372319/feedback
// @grant           GM_xmlhttpRequest
// @grant                GM_download
// @connect         *://*.poxiaobbs.com/*
// ==/UserScript==

//全局变量,禁止改动
var player, course, currents, cursor, blr, Fls = /×/,

//配置
config = {
    muted : true,                //视频静音播放,默认开启
        auto_change : false,         //自动切换课程,仅部分课程可用,可选(可能会有些问题,如果有问题请反馈一下,谢谢!)
    auto_answer : false,         //自动答题,默认关闭
        random : false,                                 //随缘答题,默认关闭,若开启则将false改为true
    five_second : false,         //5秒真男人,默认关闭;如若开启把false改为true
    //仅当开启5秒模式生效
    alarm : true,                //若开启5秒真男人则会有提示,默认开启
    cycle : null,                         //循环标记,禁止改动
        No : 0,                                                 //循环标记,禁止改动(题号)
        complete : false,                         //循环标记,禁止改动(完成状态)
        temp : null                                         //循环标记,禁止改动(确认分配一次)
};


$(document).ready(function(){
    if(new RegExp("study").test(location.href)) add_style();
});

//检查元素是否存在
function check()
{
    if(typeof(player) === 'undefined')
    {
        player = $("iframe").contents().find("iframe").contents().find('video#video_html5_api')[0];
        let tmp = $("h4.currents")[0];
        if(typeof(currents) === 'undefined') currents = document.getElementsByTagName("h4");
        for(let i = 0; i < currents.length; i++)
            if(tmp === currents[i])
            { cursor = i; break;}
        setTimeout(check, 500);
    }
    else
    {
        blr = $("iframe").contents().find("iframe").contents().find("div.vjs-poster")[0];
        blr.addEventListener("blur", function(){player.play(); start();});
        start();
    }
}

//开始自动播放
function start()
{
    if(typeof(player) === 'undefined') check();
    else
    {
        if(player.paused){player.play();}
        if(config.muted && !player.muted){player.muted = true;}
        if((player.duration - player.currentTime) <= 2)
        {
            clearTimeout(config.cycle);
            if(!config.auto_change) { alert("答题了!"); return;}
                        player.pause();
                        if(config.temp == null)
                        {
                                if(config.auto_answer)
                                        config.temp = setTimeout(change_to_answer, 1500);
                                else
                                        setTimeout(change, 1500);
                        }
        }
        if(config.five_second)
        {
            let time = player.currentTime + player.duration/10;
            if(time < (player.duration - 3))
                player.currentTime = time;
            else {player.currentTime = player.duration - 1.02;}
        }
        config.cycle = setTimeout(start, 600);
    }
}

//暂停播放
function stop()
{
        player.pause();
    clearTimeout(config.cycle);
        if(!player.paused) player.pause();
}

//重新检查
function re_check()
{
    player = undefined;
    check();
}

//增加样式
function add_style()
{
        //防止后台检查(应该没什么用)
        window.outerHeight = screen.availHeight;
        window.outerWidth  = screen.availWidth ;
        //
    let div_block, stop_btn, start_btn, tbl1, tbl2, check_box1, check_box2;
    start_btn = document.createElement("button");
        check_box1 = document.createElement("input");
        check_box2 = document.createElement("input");
    stop_btn = document.createElement("button");
    div_block = document.createElement("div");
        tbl1 = document.createElement("table");
        tbl2 = document.createElement("table");
    div_block.setAttribute("style", "position:fixed;left:10%;top:10%");
    div_block.setAttribute("class", "div_block");
        check_box1.setAttribute("type", "checkbox");
        check_box1.setAttribute("id", "ckb1");
        check_box2.setAttribute("type", "checkbox");
        check_box2.setAttribute("id", "ckb2");
        tbl1.innerHTML = "开启自动跳课";
        tbl2.innerHTML = "开启自动答题";
    start_btn.innerHTML = "开始";
    stop_btn.innerHTML = "暂停";
        tbl1.addEventListener('click', function(){ config.auto_change = check_box1.checked;});
        tbl2.addEventListener('click', function(){ config.auto_answer = check_box2.checked;});
    start_btn.addEventListener('click', re_check);
    stop_btn.addEventListener('click', stop);
        tbl1.appendChild(check_box1);
        tbl2.appendChild(check_box2);
    div_block.appendChild(start_btn);
    div_block.appendChild(stop_btn);
        div_block.appendChild(tbl2);
        div_block.appendChild(tbl1);
    $("body")[0].appendChild(div_block);
        if(config.five_second && config.alarm)
                alarm();
}

//增加警告
function alarm()
{
        let div, p, recycle;
    recycle = function(){ $("#alarm")[0].style.display = "";};
        div = document.createElement("div");
        p = document.createElement("p");
        p.innerHTML = "你是个好男人!";
    div.setAttribute("id", "alarm");
        div.setAttribute("style", "position:fixed;top:0%;left:25%;opacity:0.55");
        p.setAttribute("style", "font-size:600%;color:green;opacity:0.55;");
    div.addEventListener("click", function(){
        div.style.display = "none";
        setTimeout(recycle, 2000);
    });
        div.appendChild(p);
        $("#mainid")[0].after(div);
}

//切换课程
function change()
{
    if(currents[++cursor].parentElement.href != "javascript:void()")
        currents[cursor].click();
    else return;
    setTimeout(test_change, 1000);
}

//检查是否已在视频页面
function test_change()
{
    let blk = document.getElementById("dct1");
    if(blk.title != "视频")
    {
        document.getElementById("dct2").click();
    }
    setTimeout(re_check, 3000);
}

//切换到测验界面
function change_to_answer()
{
        let blk = document.getElementById("dct2");
        if(blk.title != "章节测验")
        {document.getElementById("dct3").click();}
        else
                blk.click();
        setTimeout(distribute, 6000);
}

//检查是否已做完一题
function completed()
{
        if(!config.complete)
                setTimeout(completed, 300);
        else
        {
                config.No += 1;
                setTimeout(distribute, 1000);
        }
}

//分发任务
function distribute()
{
        let TiMu, len, q;
        TiMu = $("iframe").contents().find("iframe").contents().find("iframe").contents().find("div.TiMu");
        len = TiMu.length;
        if(config.No < (len-1))
        {
                q = TiMu[config.No].children[0].children[1].innerText
                        || TiMu[config.No].children[0].getElementsByTagName("p");
                q = q.substr(5).trim();
                get_answer(TiMu[config.No], q.substr(0, q.length-3).trim());
        }
        else
        {
                q = TiMu[len-1].children[0].children[1].innerText
                        || TiMu[len-1].children[0].getElementsByTagName("p");
                q = q.substr(5).trim();
                get_answer(TiMu[len-1], q.substr(0, q.length-3).trim(), true);
        }
}

//获取答案并答题
function get_answer(context, q, lable=false)
{
        GM_xmlhttpRequest({
        method : "GET",
        url : "https://cx.poxiaobbs.com/api.php?word=" + q,
        onload : function(res){
            if(res.status === 200)
            {
                                answer(context, JSON.parse(res.responseText)['ans'], lable);
                        }
                        else
                                answer(context, {'ans':null, length:0}, lable);
        }
        });
}

//点击选项
function answer(context, ans, lable=false)
{
        let choices, choice, tmp;
        choices = context.children[1].getElementsByTagName("li");
        if(ans.length > 0)
        {
                if(choices.length != 2)
                {
                        for(let i = 0; i < 4; i++)
                        {
                                choice = choices[i].getElementsByTagName("a")[0];
                                tmp = new RegExp(choice.innerText.trim());
                                if(ans['ans'].length === 1)
                                {
                                        if(tmp.test(ans['ans']))
                                        {
                                                choice.click();
                                                break;
                                        }
                                }
                                else
                                {
                                        for(let j = 0; j < ans['ans'].length; j++)
                                        {
                                                if(tmp.test(ans['ans'][i]))
                                                {
                                                        choice.click();
                                                        Pause(600);
                                                        break;
                                                }
                                        }
                                }
                        }
                }
                else
                {
                        let t_f;
                        if(ans.length > 1)
                                t_f = Fls.test(ans[0]['ans']);
                        else
                                t_f = Fls.test(ans['ans']);
                        choices[(1 - !t_f)].getElementsByTagName("b")[0].click();
                }
                config.complete = true;
                if(!lable)
                        setTimeout(completed, 500);
                else
                        setTimeout(post_answer, 9000);
        }
        //随缘答题
        else if(config.random)
        {
                if(choices.length > 2)
                        choices[Math.floor(Math.random()*3.9)]
                                .getElementsByTagName("a")[0].click();
                else
                        choices[Math.floor(Math.random() + 0.5)]
                                .getElementsByTagName("b")[0].click();
                config.complete = true;
                if(!lable)
                        setTimeout(completed, 400);
                else
                        setTimeout(post_answer, 5000);
        }
        else
        {alert("答题了!"); stop(); return;}
}

//提交答案
function post_answer()
{
        config.No = 0;
        let sub = $("iframe").contents().find("iframe").contents().find("iframe").contents()
                .find("div#ZyBottom")[0].getElementsByClassName("ZY_sub clearfix")[0];
        sub.getElementsByTagName("a")[1].click();
        setTimeout(confirm_sub, 600);
}

//确认按钮
function confirm_sub()
{
        try
        {
                $("iframe").contents().find("iframe").contents().find("iframe").contents()
                        .find("div.con03")[0].getElementsByTagName("a")[0].click();
                config.temp = null;
                setTimeout(change, 10000);
        }
        catch(err)
        {
                console.warn(err);
                setTimeout(change, 10000);
        }
}

//暂停当前线程指定时间
function Pause(mills)
{
    let start, end;
    start = new Date();
    start = start.valueOf();
    while(true)
    {
        end = new Date();
        if((end.valueOf() - start) > mills)
        {console.log("end"); break;}
    }
}

//×

评分

参与人数 1PB +6666 收起 理由
明子 + 6666 很给力!

查看全部评分

温馨提示:点击页面任意处的广告支持我们哦,每天可点一次!
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
发表于 2018-9-23 21:12:10 | 显示全部楼层
完美~
感谢支持破晓论坛哦
回复

使用道具 举报

发表于 2018-9-23 21:56:24 | 显示全部楼层
破晓论坛-poxiaobbs.com 这一次,更胜以往!
发表于 2018-9-25 21:33:27 | 显示全部楼层
本帖最后由 WHAPPEN 于 2018-9-30 11:43 PM 编辑

....

点评

可以的,但是当题库中没有搜索到答案会自动暂停! 当然,如果不在意答题分数的话,可以修改代码20~30行的random开启随缘答题即可! 随缘答题时在搜索不到答案时才会使用,如果题库中有答案则使用获取到的答案!  详情 回复 发表于 2018-9-25 09:42 PM
破晓论坛-poxiaobbs.com 这一次,更胜以往!
回复

使用道具 举报

发表于 2018-9-25 21:42:55 | 显示全部楼层
WHAPPEN 发表于 2018-9-25 09:33 PM
它不可以自己做每章节之后的题目吗

可以的,但是当题库中没有搜索到答案会自动暂停!
当然,如果不在意答题分数的话,可以修改代码20~30行的random开启随缘答题即可!
随缘答题时在搜索不到答案时才会使用,如果题库中有答案则使用获取到的答案!
破晓论坛-poxiaobbs.com 这一次,更胜以往!
发表于 2018-9-26 17:56:36 ——来自破晓论坛手机网页版 | 显示全部楼层
为什么我的课不自动答题呢?   还是谢谢版主   upup

点评

请确认是否从视频页面自动跳转到答题页面! 如果还是出错,请从视频页面自动跳至答题页面后10秒钟,按下F12然后点击弹出框的console或第二个窗口截图,然后发给我,谢谢!  详情 回复 发表于 2018-9-26 06:59 PM
破晓论坛-poxiaobbs.com 这一次,更胜以往!
发表于 2018-9-26 18:59:46 | 显示全部楼层
Zzz奈斯 发表于 2018-9-26 05:56 PM
为什么我的课不自动答题呢?   还是谢谢版主   upup

请确认是否从视频页面自动跳转到答题页面!
如果还是出错,请从视频页面自动跳至答题页面后10秒钟,按下F12然后点击弹出框的console或第二个窗口截图,然后发给我,谢谢!

破晓论坛-poxiaobbs.com 这一次,更胜以往!
发表于 2018-9-28 20:23:52 | 显示全部楼层
版主,我打开random随缘答题后,还需要打开什么才能自己答题。。。

点评

请在https://greasyfork.org/zh-CN/scripts/372319下载最新版本! 还需开启自动答题功能,当在题库中没有搜索到题目时会自动提示或暂停,若开启了随缘答题后则在没有搜索到答案时随机在答案中选择一个! 因个人问  详情 回复 发表于 2018-9-28 10:16 PM
破晓论坛-poxiaobbs.com 这一次,更胜以往!
发表于 2018-9-28 22:16:58 | 显示全部楼层
bumblebeo 发表于 2018-9-28 08:23 PM
版主,我打开random随缘答题后,还需要打开什么才能自己答题。。。

请在https://greasyfork.org/zh-CN/scripts/372319下载最新版本!
还需开启自动答题功能,当在题库中没有搜索到题目时会自动提示或暂停,若开启了随缘答题后则在没有搜索到答案时随机在答案中选择一个!
因个人问题,不会再继续对该脚本进行维护,但该脚本应该还可以继续使用一段时间!
若有什么问题,可以向我反馈,我会尽量为你解答!

点评

哦 谢谢版主 版主准备换方向了啊  详情 回复 发表于 2018-9-28 11:10 PM
破晓论坛-poxiaobbs.com 这一次,更胜以往!
发表于 2018-9-28 23:10:40 | 显示全部楼层
fpschen 发表于 2018-9-28 10:16 PM
请在https://greasyfork.org/zh-CN/scripts/372319下载最新版本!
还需开启自动答题功能,当在题库中没 ...

哦 谢谢版主 版主准备换方向了啊
破晓论坛-poxiaobbs.com 这一次,更胜以往!
发表于 2018-9-29 12:54:24 | 显示全部楼层
为什么没有效果,新旧脚本,不会自动播放

点评

诶呀妈呀,好用,真香~  详情 回复 发表于 2018-9-29 01:26 PM
破晓论坛-poxiaobbs.com 这一次,更胜以往!
发表于 2018-9-29 13:26:30 | 显示全部楼层
大王叫我来巡山 发表于 2018-9-29 12:54 PM
为什么没有效果,新旧脚本,不会自动播放

诶呀妈呀,好用,真香~
破晓论坛-poxiaobbs.com 这一次,更胜以往!
发表于 2018-9-29 15:11:19 | 显示全部楼层

点评

就是不会自动答题撒~  详情 回复 发表于 2018-9-29 05:53 PM
感谢支持破晓论坛哦
发表于 2018-9-29 17:53:25 | 显示全部楼层

就是不会自动答题撒~

点评

请安确认是否从视频页面自动跳至答题页面!  详情 回复 发表于 2018-9-29 07:55 PM
破晓论坛-poxiaobbs.com 这一次,更胜以往!
发表于 2018-9-29 19:55:24 | 显示全部楼层
本帖最后由 fpschen 于 2018-9-29 08:52 PM 编辑

请确认是否从视频页面自动跳至答题页面!若从视频页跳至答题页面还是无法自动答题,可以尝试开启随缘答题模式!
破晓论坛-poxiaobbs.com 这一次,更胜以往!
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入我们,

发现科技可以让生活更美好...

立即注册

如果您已拥有本站账户,则可

为您推荐

返回顶部

在线咨询| 手机版|小黑屋| 破晓论坛 ( 陇ICP备16000681号-1 )

Templated By 破晓论坛   2016-2018

Powered by Discuz! X3.4

© 2001-2018 Comsenz Inc.

返回顶部 返回列表