超星学习通-讨论自动复读

填写代码开头的setting信息,进入到讨论区,点击页面上的“开始复读”按钮,自动将大佬的20道最新讨论题答案抄过来提交

As of 2020-04-17. See the latest version.

// ==UserScript==
// @name         超星学习通-讨论自动复读
// @version      0.11
// @description  填写代码开头的setting信息,进入到讨论区,点击页面上的“开始复读”按钮,自动将大佬的20道最新讨论题答案抄过来提交
// @match        *://*.chaoxing.com/bbscircle/grouptopic?*
// @match        *://*.chaoxing.com/bbscircle/gettopicdetail?*
// @author       duya12345
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js
// @grant        GM_setValue
// @grant        GM_getValue
// @namespace https://greasyfork.org/users/517463
// ==/UserScript==

//!!!!!!!!!!!!!!!必填!!!!!!!!!!!!!!!!!!
var setting = {
    your_name : ""//你的名字
    ,dalao_name : ""//大佬的名字
}

var $ = unsafeWindow.jQuery;
var done_times = GM_getValue("done_times");

function if_done(search_str){//判断下有没有回答过
    var reg = new RegExp(setting.your_name);
    var flag = reg.test(search_str);
    return flag;
}

function GetBigGodsAnswer() { //抓一个大佬的答案
    var req = GetRequest();
    var contentid = "topic_replys_"+req.topicid;
    var search_str = document.getElementById(contentid).innerHTML;

    if(if_done(search_str) == true){
        return "fuhqwaifuhuwaqfbgcuaosjfcdopwtfgn23333333";//瞎打一串不可能出现的content,交给下级判断去
    }
    else{
        var re = new RegExp(setting.dalao_name + "([\\s\\S]+?)</h3>", 'm');
        var re2 = /(?<=<h3([\s\S]+?)>)([\s\S]+?)(?=<\/h3>)/m;
        var match1 = search_str.match(re);
        if(match1 == null){
            return "jcf67r42396490cju3q65098746a5vfg382qa0956"//as same as top
        }
        console.log(match1);
        var match2 = match1[0].match(re2)[0];
        var replace_out1 = match2.replace(/<br>/g, "\n");
        var replace_out2 = replace_out1.replace(/&nbsp;/g, " ");
        return replace_out2;
    }
}

function GetRequest() {//获取url参数
	var url = location.search;
	var theRequest = new Object();
	if (url.indexOf("?") != -1) {
		var str = url.substr(1);
		var strs = str.split("&");
		for(var i = 0; i < strs.length; i ++) {
			theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
		}
	}
	return theRequest;
}

function getAllNoticeAttachment(){//拿上传文件的,用不到,但改了怕出问题先放着
	var attachment = "";
	var attachmentsByName = document.getElementsByName("attachment");
	if (attachmentsByName != null && attachmentsByName.length > 0) {
		for (var i = 0; i < attachmentsByName.length; i++) {
			var attachmentA = attachmentsByName[i];
			if (attachmentA == null) {
				continue;
			}
			attachment += attachmentA.getAttribute('value') + ",";
		}
	}
	return attachment;
}

function form_rep_submit(content){//提交函数,直接抄官方的改一改
    var req = GetRequest();
    //var content = $("#" + topicId).val();
    var img=$("#images_img_"+req.topicid).find("img");
    var str="";
    for(var i=0;i<img.size();i++){
        var imgsrc=img[i];
        if(i==img.size()){
            str=str+imgsrc.src.replace("100_100","origin");
        }else{
            str=str+imgsrc.src.replace("100_100","origin")+",";
        }
    }
    if(content=="fuhqwaifuhuwaqfbgcuaosjfcdopwtfgn23333333"){
        console.log("系统检测到此问题已回答");
        return false;
    }
    if(content=="jcf67r42396490cju3q65098746a5vfg382qa0956"){
        console.log("大佬还未作答,抄不到答案");
        return false;
    }
    var allAttachment = getAllNoticeAttachment();
    $.ajax({
        type: "post",
        url : "/bbscircle/addreply",
        dataType:'html',
        data: {
            clazzid : req.clazzid,
            topicId : req.topicid,
            content : content,
            files : str,
            cpi : req.cpi,
            ut : req.ut,
            attachmentFile:allAttachment,
			openc : req.openc
		},
        success: function(data){
            if (data.indexOf('error') == 0) {
                alert(data.replace('error;',''));
                return false;
            }
            var div=$("#more_reply_"+req.topicId);
            data = data.replace(/(^\s*)|(\s*$)/g,"");
			if(document.getElementById("lastInfo")){
				$("#lastInfo").before(data);
			}else{
				var doc = document.getElementById("topic_replys_"+req.topicId);
				doc.innerHTML += data;
			}
            $("#"+req.topicId).val("");
            console.log('成功复读');
            return true;
        },
        error: function(data){
            console.log('???');
            return false;
        }
    });
}

function main(i){
    var url = window.location.pathname;
    if(url == "/bbscircle/grouptopic"){
        var see_all = document.getElementsByClassName("lookall")[i/2];
        see_all.click();
    }
    else{
        var more_button = document.getElementById("more_reply");
        if(more_button != null){
            more_button.click();//点一下加载更多
            console.log(i);
        }
        window.onload = function(){
            var flag = form_rep_submit(GetBigGodsAnswer());
            window.history.back();
            if(flag == true){
                window.history.back();
            }
        }
    }
}

function create_button(){
    var button = document.createElement("input");
    button.setAttribute("type", "button");
    button.setAttribute("value", "开始复读");
    button.setAttribute("id", "start_button");
    button.style.width = "80px";
    button.style.height = "30px";
    button.style.align = "center";
    button.style.marginLeft = "0px";
    button.style.marginBottom = "0px";
    button.style.background = "#b46300";
    button.style.border = "1px solid #b46300";//52
    button.style.color = "white";
    var inner_pos = document.getElementsByClassName("title1118")[0];
    inner_pos.after(button);
    $("#start_button").click(function() {
        button_click();
    });
}

function button_click() {
    GM_setValue("done_times", 0);
    location.reload();
}

(function() {
    'use strict';

    create_button();
    if(done_times < 40){//一页显示20个讨论,2x20=40
        main(done_times++);
        GM_setValue("done_times", done_times);
    }
})();