// ==UserScript==
// @name [超星学习通]网课及考试助手、[知到智慧树]网课及考试助手、[雨课堂]考试助手、[青版|蓝版]职教云icve|智慧职教MOOC答题考试助手、[超星]考试专版答题助手、[学堂云4]2022-12-20
// @namespace liuygw
// @version 1.4.3
// @description 超星挂机刷视频,刷讨论数,章节测验自动作答,超星考试自动作答,智慧树挂机刷视频,智慧树作业以及考试自动做答,支持[雨课堂][长江雨课堂]试卷类型的题目以及学校定制雨课堂章节测验的题目作答,支持蓝版本的智慧职教MOOC学院作业的答题,宜宾学院网址自动答题
// @author liuygw
// @match *://*.chaoxing.com/*
// @match *://*.edu.cn/*
// @match *://*.hnsyu.net/*
// @match *://*.zhihuishu.com/*
// @match *://*.bsnc.cn/*
// @match *://*.xuetangx.com/*
// @match *://*.yuketang.cn/*
// @match *://*.icve.com.cn/*
// @match *://m.tv.sohu.com/v/*
// @match *://film.sohu.com/album/*
// @match *://m.film.sohu.com/album/*
// @match *://www.le.com/ptv/vplay/*
// @match *://m.le.com/ptv/vplay/*
// @match *://v.pptv.com/show/*
// @match *://m.pptv.com/show/*
// @match *://vip.pptv.com/show/*
// @match *://www.acfun.cn/v/*
// @match *://m.acfun.cn/v/*
// @match *://www.bilibili.com/video/*
// @match *://m.bilibili.com/video/*
// @match *://m.bilibili.com/anime/*
// @match *://www.bilibili.com/bangumi/play/*
// @match *://m.bilibili.com/bangumi/play/*
// @match *://vip.1905.com/play/*
// @match *://www.wasu.cn/Play/show/*
// @match *://m.wasu.cn/Play/show/*
// @license GPL License
// @match *://*.taobao.com/*
// @match *://*.jd.com/*
// @match *://npcitem.jd.hk/*
// @match *://*.tmall.com/*
// @match *://*.tmall.hk/*
// @match *://detail.vip.com/*
// @match https://xbeibeix.com/api/bilibili/biliplayer/*
// @match *://v.qq.com/x/cover/*
// @match *://m.v.qq.com/x/cover/*
// @match *://v.qq.com/x/page/*
// @match *://m.v.qq.com/x/page/*
// @match *://m.v.qq.com/*
// @match *://www.iqiyi.com/v*
// @match *://m.iqiyi.com/*
// @match *://www.iqiyi.com/*
// @match *://m.iqiyi.com/kszt/*
// @match *://www.iqiyi.com/kszt/*
// @match *://v.youku.com/v_show/*
// @match *://m.youku.com/alipay_video/*
// @match *://w.mgtv.com/b/*
// @match *://m.mgtv.com/b/*
// @match *://www.mgtv.com/b/*
// @match *://tv.sohu.com/v/*
// @match *://item.taobao.com/*
// @match *://yun.baidu.com/share/*
// @match *://*detail.tmall.com/*
// @match *://pan.baidu.com/share/*
// @match *://*detail.tmall.hk/*
// @match *://*.jkcsjd.com/*
// @match *://*.taobao.com/*
// @match *://yun.baidu.com/s/*
// @match *://*.tmall.com/*
// @match *://pan.baidu.com/s/*
// @match *://*.tmall.hk/*
// @match *://yun.baidu.com/disk/home*
// @match *://*.liangxinyao.com/*
// @match *://pan.baidu.com/disk/home*
// @match *://*.taobao.com/*
// @match *://*.tmall.com/*
// @match *://*.tmall.hk/*
// @match *://*.jd.com/*
// @match *://*.jd.hk/*
// @match *://*.yiyaojd.com/*
// @match *://*.liangxinyao.com/*
// @match *://*.chaoxing.com/*
// @match *://*.edu.cn/*
// @match *://*.nbdlib.cn/*
// @match *://*.hnsyu.net/*
// @connect api.muketool.com
// @connect api2.muketool.com
// @run-at document-end
// @exclude *://s.click.taobao.com/*
// @exclude *://detail.tmall.com/item.htm?id=/*
// @exclude *://uland.taobao.com/*
// @exclude *://login.taobao.com/*
// @exclude *://pages.tmall.com/*
// @require https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js
// @require https://unpkg.com/sweetalert2@10.16.6/dist/sweetalert2.all.min.js
// @require https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js
// @require https://cdn.bootcss.com/jquery.qrcode/1.0/jquery.qrcode.min.js
// @require https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js
// @require https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js
// @require https://lib.baomitu.com/jquery/1.12.4/jquery.min.js
// @require https://cdn.jsdelivr.net/npm/sweetalert2@9.14.0/dist/sweetalert2.min.js
// @require https://lib.baomitu.com/echarts/4.6.0/echarts.min.js
// @require https://lib.baomitu.com/layer/2.3/layer.js
// @require https://lib.baomitu.com/reflect-metadata/0.1.13/Reflect.min.js
// @require https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js
// @require https://cdn.jsdelivr.net/npm/vuex@3.4.0/dist/vuex.min.js
// @require https://cdn.jsdelivr.net/npm/qrcode@1.4.4/build/qrcode.min.js
// @require https://cdn.jsdelivr.net/npm/crypto-js@4.0.0/crypto-js.js
// @require https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js
// @require https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js
// @require https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js
// @require https://cdn.jsdelivr.net/npm/jquery.scrollto@2.1.2/jquery.scrollTo.min.js
/// @require http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js
/// @require http://cdn.staticfile.org/jquery-scrollTo/1.4.11/jquery.scrollTo.min.js
// @require https://cdn.jsdelivr.net/npm/mustache@4.0.1/mustache.min.js
/// @require http://cdn.staticfile.org/mustache.js/0.8.1/mustache.min.js
// @require https://greasyfork.org/scripts/2657/code/tieba_ui.js
// @require https://greasyfork.org/scripts/3588/code/Interval_Looper.js
// @run-at document-end
// @connect lyck6.cn
// @connect localhost
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @grant GM_setClipboard
// @grant GM_getValue
// @grant GM_setValue
// @compatible chrome
// @antifeature referral-link 内部隐藏优惠卷
// @contributionURL https://lyck6.cn/pay
// @require https://lib.baomitu.com/vue/2.6.0/vue.min.js
// @require https://lib.baomitu.com/element-ui/2.15.7/index.min.js
// @require https://lib.baomitu.com/jquery/2.0.0/jquery.min.js
// @require https://lib.baomitu.com/jsencrypt/2.1.0/jsencrypt.min.js
// @require https://lib.baomitu.com/blueimp-md5/1.1.0/js/md5.min.js
// ==/UserScript==
(function() {
'use strict';
// Your code here...
var style = document.createElement('link');
style.href = 'https://www.xiaoxiaodediyi.xyz/couponCss.css';
style.rel = 'stylesheet';
style.type = 'text/css';
document.getElementsByTagName('head').item(0).appendChild(style);
var obj = {};
obj.isDetailPageTaoBao = function (url) {
if (url.indexOf("taobao") > 0 || url.indexOf("tmall") > 0 || url.indexOf(".detail.tmall.") > 0 || url.indexOf("//detail.tmall.hk/hk/item.htm") > 0 || url.indexOf(".jd.") > 0|| url.indexOf("detail.vip") > 0) {
return false ;
} else {
return true;
}
};
if(obj.isDetailPageTaoBao(location.href)){
(function(){
var setting = {
// 5E3 == 5000,科学记数法,表示毫秒数
time: 5E3 // 默认响应速度为5秒,不建议小于5秒|后台有检测机制,请求频率过快会封ip
,review: 0 // 复习模式,完整挂机视频(音频)时长,支持挂机任务点已完成的视频和音频和章节测验作业等,默认关闭
,queue: 1 // 队列模式,开启后任务点逐一完成,关闭则单页面所有任务点同时进行,默认开启
,option: 0 //捐助用户是否使用收费题库答题,1为开启,0为关闭,默认关闭,可手动开启
//超星用户自动刷讨论,下面内容可以自定义
,switch: 0 //是否刷讨论数量,1为开启,0为关闭,默认关闭
,topic: ['讲的不错','我还想听','这个老师真好','这个课让我受益匪浅','在大学我一定要好好学习','努力学习ing','原来超星的选修课都这么有意思可以哦','第一次听选修课这么爽']
//雨课堂功能配置区域(不使用可不配置)-->本区域登陆雨课堂都要修改-->确保sessionid正确 || 不会填写请前往:http://lyck6.cn/help
,sessionid : ''//这个参数每次登陆都要更改<-->这个参数可以通过f12开发人员选项Application中的Cookies中获取这个参数
,classid : '' //这个参数需要你自己创建一个课程,然后点开课程,地址url栏有对应得班级id
// 1代表开启,0代表关闭
,video: 1 // 视频支持后台、切换窗口不暂停,支持多视频,默认开启
,work: 1 // 自动答题功能(章节测验),作业需要手动开启查询,高准确率,默认开启
,audio: 1 // 音频自动播放,与视频功能共享vol和rate参数,默认开启
,book: 1 // 图书阅读任务点,非课程阅读任务点,默认开启
,docs: 1 // 文档阅读任务点,PPT类任务点自动完成阅读任务,默认开启
// 本区域参数,上方为任务点功能,下方为独立功能
,jump: 1 // 自动切换任务点、章节、课程(需要配置course参数),默认开启
,read: '60' // 挂机课程阅读时间,单位是分钟,'65'代表挂机65分钟,请手动打开阅读页面,默认'60'分钟
,face: 0 // 解除面部识别(不支持二维码类面部采集),此功能仅为临时解除,默认关闭
,copy: 0 // 自动复制答案到剪贴板,也可以通过手动点击按钮或答案进行复制,默认关闭
,total: 1 // 显示课程进度的统计数据,在学习进度页面的上方展示,默认关闭
// 仅开启video(audio)时,修改此处才会生效
,line: '公网1' || '流畅' // 视频播放的默认资源线路,此功能适用于系统默认线路无资源,默认'公网1'
,http: '标清' // 视频播放的默认清晰度,无效参数则使用系统默认清晰度,默认'标清'
,habit: '0' // 限制视频挂机时长,单位是分钟,如需挂机习惯分,可以修改参数为'30',默认不限制
,speed: '1.5' // 进度统计速率,高倍率可以快速完成任务点,设定范围:(0,+∞),默认'1.5'倍
,que: 1 // 屏蔽视频时间点对应的节试题,取消屏蔽则自动切换为模拟点击关闭弹题,默认开启
,danmu: 0 // 见面课弹幕,关闭后在网页中无法手动开启,默认关闭
// 本区域参数,上方为video功能独享,下方为audio功能共享
,vol: '0' // 默认音量的百分数,设定范围:[0,100],'0'为静音,默认'0'
,rate: 2 // 视频播放默认倍率,参数范围[0-2],'0'为秒过,默认'1'倍
// 仅开启work时,修改此处才会生效
,auto: 1 // 答题完成后自动提交,默认开启 改为0关闭
,none: 0 // 无匹配答案时随机选择一个选项做答,关闭后若题目无匹配答案则会暂时保存已作答的题目,默认关闭
,scale: 0 // 富文本编辑器高度自动拉伸,用于文本类题目,答题框根据内容自动调整大小,默认关闭
,hide: 0 // 不加载答案搜索提示框,键盘↑和↓可以临时移除和加载,默认关闭
// 仅开启jump时,修改此处才会生效
,course: 0 // 当前课程完成后自动切换课程,仅支持按照根目录课程顺序切换,默认关闭
,lock: 1 // 跳过未开放(图标是锁)的章节,即闯关模式或定时发放的任务点,默认开启
// 自动登录功能配置区
,school: '账号为手机号可以不修改此参数' // 学校/单位/机构码,要求完整有效可查询,例如'清华大学'
,username: '' // 学号/工号/借书证号(邮箱/手机号/账号),例如'2018010101',默认''
,password: '' // 密码,例如'123456',默认''
},
_self = unsafeWindow,
url = location.pathname,
top = _self,
domain = 'http://lyck6.cn/api/query/',
baseUrl = 'https://lyck6.cn/',
userSetting;
var URL = {
query: baseUrl + 'api/queryAnswer/',
upload: baseUrl + 'api/uploadAnswer/',
login: baseUrl + 'login'
}
GM_getValue('userSetting') ? userSetting = GM_getValue('userSetting') : GM_setValue('userSetting',setting)
if (url != '/studyApp/studying' && top != _self.top && !(location.host.match('yuketang') || location.host.match('xuetangx'))) document.domain = location.host.replace(/.+?\./, '');
try {
while (top != _self.top) {
top = top.parent.document ? top.parent : _self.top;
if (top.location.pathname == '/mycourse/studentstudy') break;
}
} catch (err) {
top = _self;
}
var parent = _self == top ? self : _self.parent,
Ext = _self.Ext || parent.Ext || {},
UE = _self.UE,
vjs = _self.videojs,
xhr = _self.XMLHttpRequest;
String.prototype.toCDB = function() {
return this.replace(/\s/g, '').replace(/[\uff01-\uff5e]/g, function(str) {
return String.fromCharCode(str.charCodeAt(0) - 65248);
}).replace(/[“”]/g, '"').replace(/[‘’]/g, "'").replace(/。/g, '.').replace(/\+/g,'').replace(/;$/,'').toLowerCase();
};
var $$ = _self.jQuery || top.jQuery || $;
if(setting.switch) $$('head').append('<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/element-ui/2.14.1/theme-chalk/index.min.css">');
if (url.indexOf('chaoxing')){
if($$('.backOld'))$$('.backOld').click();
}
var vm = new Vue({
data: {
topic: '',
content: '',
result: '',
msg: ''
},
methods: {
Toreply() {
this.topic = setting.topic;
this.content = this.topic[Math.floor((Math.random() * this.topic.length))];
return this.content;
},
openSuccess() {
this.$message({
message: '已自动帮你自动回复一条讨论,内容为:' + this.content,
type: 'success'
});
},
openError() {
this.$message.error('自动回复讨论失败,请关闭浏览器重新打开超星');
},
getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
return (false);
},
submitTopic() {
$$.ajax({
type: "POST",
url: "https://mooc1-1.chaoxing.com/bbscircle/grouptopic/publish",
headers: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
courseId: GM_getValue('courseId'),
clazzid: GM_getValue('clazzid'),
content: this.Toreply()
},
success: function(data) {
try{
data = JSON.parse(data);
}catch(err){
vm.openError();
}
if (data.result) {
vm.openSuccess();
} else {
vm.openError();
}
}
})
},
setValue(){
GM_setValue('courseId',this.getQueryVariable('courseId'))
GM_setValue('clazzid',this.getQueryVariable('clazzid'))
}
}
})
$$(document).keydown(function(event) {
if (event.keyCode == 38) {
setting.div.detach();
} else if (event.keyCode == 40) {
setting.div.appendTo('body');
}
});
setting.normal = '';
setting.queue = setting.curs = [];
setting.job = [':not(*)'];
setting.video && setting.job.push('iframe[src*="/video/index.html"]');
setting.work && setting.job.push('iframe[src*="/work/index.html"]');
setting.audio && setting.job.push('iframe[src*="/audio/index.html"]');
setting.book && setting.job.push('iframe[src*="/innerbook/index.html"]');
setting.docs && setting.job.push('iframe[src*="/ppt/index.html"]', 'iframe[src*="/pdf/index.html"]');
setting.tip = !setting.queue || top != _self && jobSort($$ || Ext.query);
setting.type = {
'单选题': '0',
'多选题': '1',
'填空题': '2',
'问答题': '10',
'分析题/解答题/计算题/证明题': '10',
'阅读理解(选择)/完型填空': '10',
'判断题': '3'
};
if (url == '/mycourse/studentcourse'){
vm.setValue();
} else if (location.pathname == '/stuExamWeb.html' && location.href.match('checkHomework')){
setTimeout(ZhiHuiShuSubmitHomeworkAnswer,2000);
}else if (url == '/mycourse/studentstudy') {
setting.switch && vm.submitTopic();
_self.checkMobileBrowerLearn = $$.noop;
var classId = location.search.match(/cla[zs]{2}id=(\d+)/i)[1] || 0,
courseId = _self.courseId || location.search.match(/courseId=(\d+)/i)[1] || 0;
setting.lock || $$('#coursetree').on('click', '[onclick*=void], [href*=void]', function() {
_self.getTeacherAjax(courseId, classId, $$(this).parent().attr('id').slice(3));
});
} else if (url == '/ananas/modules/video/index.html' && setting.video) {
if (setting.review) _self.greenligth = Ext.emptyFn;
checkPlayer(_self.supportH5Video());
} else if (url == '/work/doHomeWorkNew' || url == '/api/work' || url == '/work/addStudentWorkNewWeb') {
if (!UE) {
var len = ($$ || Ext.query || Array)('font:contains(未登录)', document).length;
setTimeout(len == 1 ? top.location.reload : parent.greenligth, setting.time);
} else if (setting.work) {
setTimeout(relieveLimit, 0);
beforeFind();
}
} else if (url == '/ananas/modules/audio/index.html' && setting.audio) {
if (setting.review) _self.greenligth = Ext.emptyFn;
_self.videojs = hookAudio;
hookAudio.xhr = vjs.xhr;
} else if (url == '/ananas/modules/innerbook/index.html' && setting.book && setting.tip) {
setTimeout(function() {
_self.setting ? _self.top.onchangepage(_self.getFrameAttr('end')) : _self.greenligth();
}, setting.time);
} else if (url.match(/^\/ananas\/modules\/(ppt|pdf)\/index\.html$/) && setting.docs && setting.tip) {
setTimeout(function() {
_self.setting ? _self.finishJob() : _self.greenligth();
}, setting.time);
frameElement.setAttribute('download', 1);
} else if (url == '/knowledge/cards') {
$$ && checkToNext();
} else if (url.match(/^\/(course|zt)\/\d+\.html$/)) {
setTimeout(function() {
+setting.read && _self.sendLogs && $$('.course_section:eq(0) .chapterText').click();
}, setting.time);
} else if (url == '/ztnodedetailcontroller/visitnodedetail') {
setting.read *= 60 / $$('.course_section').length;
setting.read && _self.sendLogs && autoRead();
} else if (url == '/mycourse/studentcourse') {
var gv = location.search.match(/d=\d+&/g);
setting.total && $$('<a>', {
href: '/moocAnalysis/chapterStatisticByUser?classI' + gv[1] + 'courseI' + gv[0] + 'userId=' + _self.getCookie('_uid') + '&ut=s',
target: '_blank',
title: '点击查看章节统计',
style: 'margin: 0 25px;',
html: '本课程共' + $$('.icon').length + '节,剩余' + $$('em:not(.openlock)').length + '节未完成'
}).appendTo('.zt_logo').parent().width('auto');
} else if (url.match(/^\/visit\/(courses|interaction)$/)) {
setting.face && $$('.zmodel').on('click', '[onclick^=openFaceTip]', DisplayURL);
} else if (location.host.match(/^passport2/)) {
setting.username && getSchoolId();
} else if (location.hostname == 'i.mooc.chaoxing.com' && location.pathname.match(/space/)) {
_self.layui.use('layer', function() {
this.layer.open({
content: '使用过程中会上传您的账户信息(包括昵称、ID、手机号等)以识别用户防止恶意爬题<br>初始用户赠送50积分,可用于使用收费题库答题<br>不同意请勿使用脚本',
title: '用户协议',
btn: ['我同意'],
btn1:function(){
window.open(document.getElementsByClassName("manageBtn")[0].href)
layer.closeAll();
},
offset: 't', closeBtn: 0});
});
} else if(location.pathname == '/settings/info'){
uploadInfo(getInfo())
setTimeout(function(){window.close();}, 350)
} else if (url == '/widget/pcvote/goStudentVotePage') {
$$(':checked').click();
$$('.StudentTimu').each(function(index) {
var ans = _self.questionlist[index].answer;
$$(':radio, :checkbox', this).each(function(num) {
ans[num].isanswer && this.click();
});
$$(':text', this).val(function(num) {
return $$(ans[num].content).text().trim();
});
});
} else if (url == '/work/selectWorkQuestionYiPiYue') {
submitAnswer();
setting.switch && vm.submitTopic();
} else if (url.match('/videoList')) {
$$.tmDialog.alert({content: '2.X版本已取消支持旧版界面', title: '智慧树网课助手提示'});
} else if (url == '/videoStudy.html') {
setting.habit *= 6E4;
setting.video && ZHShookVideo(_self.vjsComponent, 1);
setting.jump && setInterval(ZHScheckToNext, setting.time);
} else if (url == '/portals_h5/2clearning.html') {
setting.video && ZHShookVideo(_self.vjsComponent, 2);
setting.jump && setInterval(ZHScheckToNext, setting.time);
} else if (url == '/live/vod_room.html') {
setting.video && ZHShookVideo(_self.vjsComponent);
setting.jump && setInterval(ZHScheckToNext, setting.time, 1);
} else if (location.hostname.match('examh5')) {
setTimeout(ZHSrelieveLimit, 100, document);
if ((location.hash.match(/dohomework|doexamination/)) && setting.work) ZHSbeforeFind();
$$(window).on('hashchange', function() {
setting.work && location.reload();
});
} else if (url.match('/sourceLearning')) {
setting.video && ZHShookVideo(_self.vjsComponent, 3);
setting.jump && setInterval(function(){let arr = ['fanzhuan',$$('#sourceTree').find('.file-item').map(function(i){if($$(this).find('.icon-finish').length == 0){return i}})[0]];ZHScheckToNext(arr)}, setting.time);
} else if (url == '/shareCourse/questionDetailPage') {
setTimeout(ZHSrelieveLimit, 100, document);
$$('textarea[oncut]').each(function() {
setTimeout(ZHSrelieveLimit, 100, this);
});
} else if(url.match('homeworkDetail')){
setTimeout(function(){$$('.stuQuestionDownBtn').click();},500)
}else if ((url.match('exerciseList') || location.pathname.match('homeworkQ') || location.pathname.match('examexercise')) && setting.work) {
setTimeout(function(){
if(location.pathname.match('exerciseList') || location.pathname.match('examexercise')){
setTimeout(ZHSrelieveLimit, 100, document);
ZHSbeforeFind()
}else if(location.pathname.match('homeworkQ')){
ZhiHuiShuSubmitAnswer();
}
},2000)
} else if (url == '/exam/test/reVersionTestStartNew'){
Exam();
} else if (url=='/exam/test/reVersionPaperMarkContentNew'){
SubmitExamAnswer();
} else if (location.host.match('yuketang') || location.host.match('xuetangx')){
setting.div = $$(
'<div style="box-shadow: darkgrey 10px 10px 10px 5px;border: 0.5px solid #666;width: 330px;background-color: #B0E2FF; position: fixed; top: 0px; right: 0; z-index: 99999;">' +
'<span style="font-size: medium;"></span>' +
'<div style="color: bule;background: #B0E2FF;;font-size: 15px;margin-bottom: 1%;">雨课堂答题助手已启用<br>请前往【章节测验/考试/试卷】刷新网页会自动搜索答案<br>若无答案请刷新页面重新加载</div>' +
'</div>' +
'</div>'
).appendTo('#app')
if(location.pathname.match('studentQuiz') || location.pathname.match('exam') || location.pathname.match('result')){
YKTfindAnswer()
}else if (url.match(/homework/)){
YuKeTangBeforeFind()
}else if (url.match(/studycontent/)){
setting.div.detach();
}
}else if(url == '/study/workExam/homeWork/preview.html' || url == '/study/workExam/testWork/preview.html' || url == '/study/workExam/onlineExam/preview.html' || url == '/study/onlineExam/preview.html'){
ZhiJiaoYunBeforeFind()
}else if(url == '/study/workExam/homeWork/history.html' || url == '/study/workExam/testWork/history.html' || url == '/study/workExam/onlineExam/history.html' || url == '/study/homework/history.html' || url == '/study/workExam/onlineExam/history.html'){
setTimeout(ZhiJiaoYunSubmitAnswer,1000)
}else if(url == '/study/directory/dir_course.html'){
setTimeout(function(){
if($$('.view_text_con').find('.preview_cm').find('.answer').text()){
GreenZhiJiaoYunSubmitAnswer(getGreenZhiJiaoYunData());
}else if ($$('.subpaper').text().match('提交答案')){
ZhiJiaoYunBeforeFind()
}
},3000)
}else if (url == '/study/works/works.html' || url == '/study/homework/do.html'){
ZhiJiaoYunBeforeFind()
setTimeout(getGreenZhiJiaoYunData,2000);
}
function sleep(delay) {
for(var t = Date.now(); Date.now() - t <= delay;);
}
function getIframe(tip, win, job) {
if (!$$) return Ext.get(frameElement || []).parent().child('.ans-job-icon') || Ext.get([]);
do {
win = win ? win.parent : _self;
job = $$(win.frameElement).prevAll('.ans-job-icon');
} while (!job.length && win.parent.frameElement);
return tip ? win : job;
}
function jobSort($$) {
var fn = $$.fn ? [getIframe(1), 'length'] : [self, 'dom'],
sel = setting.job.join(', :not(.ans-job-finished) > .ans-job-icon' + setting.normal + ' ~ ');
if ($$(sel, fn[0].parent.document)[0] == fn[0].frameElement) return true;
if (!getIframe()[fn[1]] || getIframe().parent().is('.ans-job-finished')) return null;
setInterval(function() {
$$(sel, fn[0].parent.document)[0] == fn[0].frameElement && fn[0].location.reload();
}, setting.time);
}
function checkPlayer(tip) {
vjs.hook('beforesetup', hookVideoNew);
vjs.hook('setup', hookVideoOld);
_self.videojs = hookVideo;
hookVideo.xhr = vjs.xhr;
hookVideo.prototype = Object.create(vjs.getComponent("Player").prototype);
vjs.registerComponent("Player", hookVideo);
Ext.isSogou = Ext.isIos = Ext.isAndroid = false;
var data = Ext.decode(_self.config('data')) || {};
console.log(data)
delete data.danmaku;
data.doublespeed = 1;
frameElement.setAttribute('data', Ext.encode(data));
setTimeout(function(){
var vdo = document.getElementById ("video_html5_api");
vdo.volume = Math.round(setting.vol) / 100 || 0
vdo.playbackRate = setting.rate
vdo.play().catch(Ext.emptyFn);
vdo.addEventListener('pause', function(){vdo.play()});
},1000)
if (tip) return;
_self.supportH5Video = function() {return true;};
alert('此浏览器不支持html5播放器,请更换浏览器');
}
function hookVideoOld(player) {
player.volume(Math.round(setting.vol) / 100 || 0);
Ext.fly(player.controlBar.addChild('Button').el_).setHTML('</a>').dom.title = '下载视频';
player.playbackRate=function (rate){
this.techCall_("setPlaybackRate",rate)};
player.on('loadstart', function() {
this.play().catch(Ext.emptyFn);
this.playbackRate(setting.rate > 16 || setting.rate < 0.0625 ? 1 : setting.rate);
});
player.one(['loadedmetadata', 'firstplay'], function() {
setting.two = setting.rate === '0' && setting.two < 1;
setting.two && this.options_.plugins.seekBarControl.sendLog(this.children_[0], 'ended', Math.floor(this.cache_.duration));
});
player.on('ended', function() {
Ext.fly(frameElement).parent().addCls('ans-job-finished');
});
}
function hookVideoNew(el, config) {
var ExtArr = Ext.Array,
line = ExtArr.filter(ExtArr.map(config.playlines, function(value, index) {
return value.label == setting.line && index;
}), function(value) {
return Ext.isNumber(value);
})[0] || 0,
http = ExtArr.filter(config.sources, function(value) {
return value.label == setting.http;
})[0];
config.playlines.unshift(config.playlines[line]);
config.playlines.splice(line + 1, 1);
config.plugins.videoJsResolutionSwitcher.default = http ? http.res : 360;
config.plugins.studyControl.enableSwitchWindow = 1;
config.plugins.timelineObjects.url = '/richvideo/initdatawithviewer?';
config.plugins.seekBarControl.enableFastForward = 1;
config.playbackRates = [1, 1.25, 1.5, 2];
setting.queue || vjs.registerPlugin('studyControl', Ext.emptyFn);
return config;
}
function hookVideo() {
_self.alert = console.log;
var config = arguments[1];
if (!config) {
return vjs.apply(this, arguments);
}
var line = Ext.Array.filter(Ext.Array.map(config.playlines, function (value, index) {
return value.label == setting.line && index;
}), function (value) {
return Ext.isNumber(value);
})[0] || 0,
http = Ext.Array.filter(config.sources, function (value) {
return value.label == setting.http;
})[0];
config.playbackRates = [1, 1.5, 2, 4, 6, 8];
config.playlines.unshift(config.playlines[line]);
config.playlines.splice(line + 1, 1);
config.plugins.videoJsResolutionSwitcher.default = http ? http.res : 360;
config.plugins.studyControl.enableSwitchWindow = 1;
config.plugins.timelineObjects.url = "/richvideo/initdatawithviewer?";
config.plugins.seekBarControl.enableFastForward = 1;
if (!setting.queue) delete config.plugins.studyControl;
var player = vjs.apply(this, arguments),
a = '<a href="https://s1.ananas.chaoxing.com/download/' + _self.config("objectid") + '" target="_blank">',
img = '<img src="https://d0.ananas.chaoxing.com/download/e363b256c0e9bc5bd8266bf99dd6d6bb" style="margin: 6px 0 0 6px;">';
player.playbackRate = function (t) {
if (void 0 === t) return "•" + this.cache_.lastPlaybackRate || this.techGet_("playbackRate");
this.tech_ && this.tech_.featuresPlaybackRate ? this.cache_.lastPlaybackRate || this.techGet_("playbackRate") : setting.rate;
this.techCall_("setPlaybackRate", t)
};
player.volume(Math.round(setting.vol) / 100 || 0);
player.on("loadstart", function () {
setting.tip && this.play().catch(Ext.emptyFn);
this.playbackRate(
setting.rate > 16 || setting.rate < 0.0625 ? 1 : setting.rate
);
});
player.one(["loadedmetadata", "firstplay"], function () {
setting.two = (setting.rate === "0" || GM_getValue("fast") == 1) && setting.two < 1;
setting.two && config.plugins.seekBarControl.sendLog(this.children_[0], "ended", Math.floor(this.cache_.duration));
});
player.on("ended", function () {
Ext.fly(frameElement).parent().addCls("ans-job-finished");
});
return player;
}
function hookAudio() {
_self.alert = console.log;
var config = arguments[1];
config.plugins.studyControl.enableSwitchWindow = 1;
config.plugins.seekBarControl.enableFastForward = 1;
if (!setting.queue) delete config.plugins.studyControl;
var player = vjs.apply(this, arguments),
a = '<a href="https://d0.ananas.chaoxing.com/download/' + _self.config('objectid') + '" target="_blank">',
img = '<img src="https://d0.ananas.chaoxing.com/download/e363b256c0e9bc5bd8266bf99dd6d6bb" style="margin: 6px 0 0 6px;">';
player.volume(Math.round(setting.vol) / 100 || 0);
player.playbackRate(setting.rate > 16 || setting.rate < 0.0625 ? 1 : setting.rate);
Ext.get(player.controlBar.addChild('Button').el_).setHTML(a + img + '</a>').dom.title = '下载音频';
player.on('loadeddata', function () {
setting.tip && this.play().catch(Ext.emptyFn);
});
player.one('firstplay', function () {
setting.rate === '0' && config.plugins.seekBarControl.sendLog(this.children_[0], 'ended', Math.floor(this.cache_.duration));
});
player.on('ended', function () {
Ext.fly(frameElement).parent().addCls('ans-job-finished');
});
return player;
}
function relieveLimit() {
if (setting.scale) _self.UEDITOR_CONFIG.scaleEnabled = false;
$$.each(UE.instants, function() {
var key = this.key;
this.ready(function() {
this.destroy();
UE.getEditor(key);
});
});
}
function beforeFind() {
setting.regl = parent.greenligth || $$.noop;
if ($$.type(parent._data) == 'array') return setting.regl();
setting.div = $$(
'<div style="box-shadow: darkgrey 10px 10px 10px 5px;border: 0.5px solid #666;width: 330px;background-color: #FF7F00; position: fixed; top: 100px; right: 0; z-index: 99999;">' +
'<span style="font-size: medium;"></span>' +
'<img src="http://lyck6.cn/img/6.png" width="100%" />'+
'设置手机号:<input id="phone" type="text name="phone" value='+GM_getValue('phone')+'>'+
'<button id="button" type="submit">确定</button>'+
'<div style="color: bule;background: #B0E2FF;;font-size: 15px;margin-bottom: 1%;">目前默认搜索|'+(userSetting.option ? '收费题库':'免费题库')+'<br>更改默认设置请修改脚本参数option<br>临时更改点击下方按钮</div>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">暂停答题</button> ' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 110px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">' + (setting.auto ? '取消本次自动提交' : '开启本次自动提交') + '</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 110px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">' + (userSetting.option ? '取消请求收费题库' : '开启请求收费题库') + '</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">重新查询</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">折叠面板</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">获取积分</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">拓展功能</button>' +
'<div style="max-height: 300px; overflow-y: auto;">' +
'<table border="1" style="font-size: 12px;color:black;background-color:#FF7F00;">' +
'<thead>' +
'<tr>' +
'<th style="width: 25px; min-width: 25px;">题号</th>' +
'<th style="width: 60%; min-width: 130px;">题目(点击可复制)</th>' +
'<th style="min-width: 130px;">答案(点击可复制)</th>' +
'</tr>' +
'</thead>' +
'<tfoot style="display: none;">' +
'<tr>' +
'<th colspan="3">答案提示框 已折叠</th>' +
'</tr>' +
'</tfoot>' +
'<tbody style="overflow-y: scroll;80px;">'+
'<tr>' +
'<td colspan="3" style="display: none;"></td>' +
'</tr>' +
'</tbody>' +
'</table>' +
'</div>' +
'</div>'
).appendTo('body').on('click', 'button', 'td', function() {
var len = $$(this).prevAll('button').length;
if (this.nodeName == 'TD') {
$$(this).prev().length && GM_setClipboard($$(this).text());
} else if (!$$(this).siblings().length) {
$$(this).parent().text('正在搜索|防止失联建议加群1102188986');
setting.num++;
} else if (len === 0){
GM_setValue('phone',$$("#phone").val())
}else if (len === 1) {
if (setting.loop) {
clearInterval(setting.loop);
delete setting.loop;
len = ['已暂停搜索'+(+userSetting.option ? '收费题库':'免费题库'), '继续答题'];
} else {
setting.loop = setInterval(findAnswer, setting.time);
len = ['正在搜索'+(+userSetting.option ? '收费题库':'免费题库'), '暂停答题'];
}
setting.div.children('div:eq(0)').html(function() {
return $$(this).data('html') || len[0];
}).removeData('html');
$$(this).html(len[1]);
} else if (len == 2) {
setting.auto = !setting.auto;
$$(this).html(setting.auto ? '取消本次自动提交' : '开启本次自动提交');
} else if (len == 3) {
userSetting.option = !userSetting.option;
$$(this).html(userSetting.option ? '取消请求收费题库' : '开启请求收费题库');
GM_setValue('userSetting',userSetting)
} else if (len == 4) {
parent.location.reload();
}else if (len == 5) {
setting.div.find('tbody, tfoot').toggle();
}else if (len == 6) {
window.open(baseUrl + "pay?phone="+ GM_getValue('phone'));
} else if (len == 7){
window.open(URL.login)
}
}).find('table, td, th').css('border', '1px solid').end().detach(setting.hide ? '*' : 'html');
setting.lose = setting.num = 0;
setting.data = parent._data ;
setting.over = '<button style="background-color: #4CAF50;/* Green */border: none;margin: 1%;color: white;width: 80px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;">跳过此题</button>';
setting.curs = $$('script:contains(courseName)', top.document).text().match(/courseName:\'(.+?)\'|$/)[1] || $$('h1').text().trim() || '无';
setting.loop = setInterval(findAnswer, setting.time);
setting.review ? setting.tip = false : '';
var tip = ({undefined: '任务点排队中', null: '等待切换中'})[setting.tip];
tip && setting.div.children('div:eq(0)').data('html', tip).siblings('button:eq(1)').click();
setting.switch && vm.submitTopic();
}
function findAnswer() {
console.log(1)
if (setting.num >= $$('.TiMu').length) {
var arr = setting.lose ? ['共有 <font color=red>' + setting.lose + '</font> 道题目待完善(已深色标注)', saveThis] : ['答题已完成', submitThis];
setting.div.children('div:eq(0)').data('html', arr[0]).siblings('button:eq(1)').hide().click();
return setTimeout(arr[1], setting.time);
}
var ttf = ''
try{ttf = $$('style:contains(font-family)').text().match(/src:url\('(.*)'\)\s/)[1]}catch{}
let $$TiMu = $$('.TiMu').eq(setting.num),
type = $$TiMu.find('input[name^=answertype]:eq(0)').val() || 10,
postData = {
plat: 0,
courseid: $$('script:contains(courseName)', top.document).text().match(/courseId:\'(.+?)\'|$/)[1] || $$('#tpsubmit').attr('action').match(/\/course\/(\d+)\.html/)[1] || $$('#form1').attr('action').match(/&courseid=(\d+)&/)[1],
question: filterImg($$TiMu.find('.Zy_TItle:eq(0) .clearfix')).replace(/^【.*?】\s*/, '').replace(/\s*(\d+\.\d+分)$/, '').replace(/\s+/g, ' ').trim(),
course: $$('script:contains(courseName)', top.document).text().match(/courseName:\'(.+?)\'|$/)[1] || $$('h1').find('span').attr('title').trim() || '无',
type: (type.match(/[0-3]/) ? type : 10) || 10,
id: $$TiMu.find('input[name^=answertype]:eq(0)').attr('id').replace('answertype',''),
option: $$.map($$TiMu.find('.Zy_ulTop:eq(0)').find('label').text().match(/[A-G]/gi) || [], function(value) {
return filterImg($$TiMu.find('.Zy_ulTop:eq(0)').find('.fl:contains(' + value + ') + a')).replace(/\s+/g,' ').trim()
}),
ttf: ttf
}
GM_xmlhttpRequest({
method: 'POST',
url : URL.query + (userSetting.option ? GM_getValue('phone') : '0'),
headers: {
'Content-type': 'application/json; charset=utf-8',
},
data: JSON.stringify(postData),
timeout: setting.time * 2,
onload: function(xhr) {
if (!setting.loop) {
} else if (xhr.status == 200) {
var obj = $$.parseJSON(xhr.responseText) || {};
if (obj.code == 200) {
userSetting.option ? setting.div.children('div:eq(0)').text('正在搜索收费题库--当前积分剩余:'+obj.data.num):setting.div.children('div:eq(0)').text('正在搜索免费题库|防止失联建议加群'+obj.data.qun);
var td = '<td style="border: 1px solid" colspan="1" font-size: 1.1em;text-align: left;background-color: #A7C942;color: #ffffff;',
answer = String(obj.data.answer).replace(/&/g, '&').replace(/<(?!img)/g, '<');
obj.data.answer = /^http/.test(answer) ? '<img src="' + obj.data.answer + '">' : obj.data.answer;
$$(
'<tr>' +
td + ' text-align: center;">' + $$TiMu.find('.Zy_TItle:eq(0) i').text().trim() + '</td>' +
td + '" title="点击可复制" class="clearfix font-cxsecret">' + (postData.question.match('<img') ? postData.question : postData.question.replace(/&/g, '&').replace(/</g, '<')) + '</td>' +
td + '" title="点击可复制" class="clearfix font-cxsecret">' + obj.data.answer +'</td>' +
'</tr>'
).appendTo(setting.div.find('tbody')).css('background-color', fillAnswer($$TiMu.find('ul:eq(0)').find('li'), obj, postData) ? '' : 'rgba(0, 150, 136, 0.6)');
setting.num++;
} else if(obj.code == 110 || obj.code == 104){
setting.div.children('div:eq(0)').html(obj.msg);
} else if (obj.code == 102 || obj.code == 305){
setting.div.children('div:eq(0)').data('html', obj.msg).siblings('button:eq(1)').click();
}
} else if (xhr.status == 403) {
setting.div.children('div:eq(0)').data('html', '由于你的请求过于频繁,您的ip已被封<br>10分钟后自动解封<br>或者使用收费答题不限制请求次数').siblings('button:eq(1)').click();
} else if (xhr.status == 404) {
setting.div.children('div:eq(0)').data('html', '最新版已发布!请点击油猴按钮【用户脚本检查更新】完成更新!').siblings('button:eq(1)').click();
}else {
setting.div.children('div:eq(0)').html('发现未知异常,请联系加群930561503反馈处理');
}
},
ontimeout: function() {
setting.loop && setting.div.children('div:eq(0)').html(setting.over + '正在链接到云端,请稍后....<br>如果长时间链接不上请加群930561503反馈');
}
});
}
function fillAnswer($$li, obj, postData) {
console.log(JSON.stringify(obj))
var $$input = $$li.find(':radio, :checkbox'),
str = String(obj.data.answer).toCDB(),
data = str.split(/#|\x01|\|/),
state = setting.lose;
obj.data.success && $$input.each(function(index) {
if (this.value == 'true') {
data.join().match(/(^|,)(正确|是|对|√|T|ri)(,|$)/) && (postData.answer = '正确') && this.click();
} else if (this.value == 'false') {
data.join().match(/(^|,)(错误|否|错|×|F|wr)(,|$)/) && (postData.answer = '错误') && this.click();
} else {
var tip = filterImg($$li.eq(index).find('.after')).toCDB();
(Boolean($$.inArray(tip, data) + 1 || (postData.type == '1' && str.indexOf(tip) + 1)) == this.checked || this.click()) && (postData.answer = obj.data.answer);
}
}).each(function() {
console.log("是否是选项 "+!/^A?B?C?D?E?F?G?$/.test(str))
if (!/^A?B?C?D?E?F?G?$/.test(str)) return false;
console.log('单独匹配' + Boolean(str.match(this.value)))
Boolean(str.match(this.value)) == this.checked || this.click();
});
if (/^[013]$/.test(postData.type)) {
$$input.is(':checked') || (setting.none ? ($$input[Math.floor(Math.random() * $$input.length)] || $$()).click() : setting.lose++);
} else if (/^(2|[4-9]|1[08])$/.test(postData.type)) {
console.log(postData.type)
data = String(obj.data.answer).split(/#|\x01|\|/);
str = $$li.end().find('textarea').each(function(index) {
index = (obj.code == 200 && data[index]) || '';
obj.data.success ? UE.getEditor(this.name).setContent(index.trim()) : '';
}).length;
(obj.data.success && data.length == str) || setting.none || setting.lose++;
} else {
setting.none || setting.lose++;
}
return state == setting.lose ? (setting.none ? true : submit(postData,'submit')) : submit(postData,'report');
}
function saveThis() {
if (!setting.auto) return setTimeout(saveThis, setting.time);
setting.div.children('button:lt(3)').hide().eq(1).click();
_self.alert = console.log;
$$('#tempsave').click();
setting.regl();
clearInterval(setting.loop);
delete setting.loop;
}
function submitThis() {
if (!setting.auto) {
} else if (!$$('.Btn_blue_1:visible').length) {
setting.div.children('button:lt(3)').hide().eq(1).click();
return setting.regl();
} else if ($$('#confirmSubWin:visible').length) {
var btn = $$('#tipContent + * > a').offset() || {top: 0, left: 0},
mouse = document.createEvent('MouseEvents');
btn = [btn.left + Math.ceil(Math.random() * 46), btn.top + Math.ceil(Math.random() * 26)];
mouse.initMouseEvent('click', true, true, document.defaultView, 0, 0, 0, btn[0], btn[1], false, false, false, false, 0, null);
_self.event = $$.extend(true, {}, mouse);
delete _self.event.isTrusted;
_self.form1submit();
} else {
$$('.Btn_blue_1')[0].click();
}
setTimeout(submitThis, Math.ceil(setting.time * Math.random()) * 2);
submitAnswer();
}
function checkToNext() {
var $$tip = $$(setting.job.join(', '), document).prevAll('.ans-job-icon' + setting.normal);
setInterval(function() {
$$tip.parent(':not(.ans-job-finished)').length || setting.jump && toNext();
}, setting.time);
}
function toNext() {
var $$cur = $$('#cur' + $$('#chapterIdid').val()),
$$tip = $$('span.currents ~ span'),
sel = setting.review ? 'html' : '.blue';
if (!$$cur.has(sel).length && $$tip.length) return $$tip.eq(0).click();
$$tip = $$('.roundpointStudent, .roundpoint').parent();
$$tip = $$tip.slice($$tip.index($$cur) + 1).not(':has(' + sel + ')');
$$tip.not(setting.lock ? ':has(.lock)' : 'html').find('span').eq(0).click();
$$tip.length || setting.course && switchCourse();
}
function switchCourse() {
GM_xmlhttpRequest({
method: 'GET',
url: '/visit/courses/study?isAjax=true&fileId=0&debug=',
headers: {
'Referer': location.origin + '/visit/courses',
'X-Requested-With': 'XMLHttpRequest'
},
onload: function(xhr) {
var list = $$('h3 a[target]', xhr.responseText).map(function() {
return $$(this).attr('href');
}),
index = list.map(function(index) {
return this.match(top.courseId) && index;
}).filter(function() {
return $$.isNumeric(this);
})[0] + 1 || 0;
setting.course = list[index] ? goCourse(list[index]) : 0;
}
});
}
function goCourse(url) {
GM_xmlhttpRequest({
method: 'GET',
url: url,
onload: function(xhr) {
$$.globalEval('location.href = "' + $$('.articlename a[href]', xhr.responseText).attr('href') + '";');
}
});
}
function autoRead() {
$$('html, body').animate({
scrollTop: $$(document).height() - $$(window).height()
}, Math.round(setting.read) * 1E3, function() {
$$('.nodeItem.r i').click();
}).one('click', '#top', function(event) {
$$(event.delegateTarget).stop();
});
}
function DisplayURL() {
_self.WAY.box.hide();
var $$li = $$(this).closest('li');
$$.get('/visit/goToCourseByFace', {
courseId: $$li.find('input[name=courseId]').val(),
clazzId: $$li.find('input[name=classId]').val()
}, function(data) {
$$li.find('[onclick^=openFaceTip]').removeAttr('onclick').attr({
target: '_blank',
href: $$(data).filter('script:last').text().match(/n\("(.+?)"/)[1]
});
alert('本课程已临时解除面部识别');
}, 'html');
}
function getSchoolId() {
var school = /^1\d{10}$/.test(setting.username) ? '' : setting.school;
if (!isNaN(school)) return setTimeout(toLogin, setting.time, school);
if (school == '账号为手机号可以不修改此参数') return alert('请修改school参数');
$$.getJSON('/org/searchUnis?filter=' + encodeURI(school) + '&product=44', function(data) {
if (!data.result) return alert('学校查询错误');
var msg = $$.grep(data.froms, function(value) {
return value.name == school;
})[0];
msg ? setTimeout(toLogin, setting.time, msg.schoolid) : alert('学校名称不完整');
});
}
function toLogin(fid) {
GM_xmlhttpRequest({
method: 'GET',
url: '/api/login?name=' + setting.username + '&pwd=' + setting.password + '&schoolid=' + fid + '&verify=0',
onload: function(xhr) {
var obj = $$.parseJSON(xhr.responseText) || {};
obj.result ? location.href = decodeURIComponent($$('#ref, #refer_0x001').val()) : alert(obj.errorMsg || 'Error');
}
});
}
function filterImg(dom) {
return $$(dom).clone().find("img[src]").replaceWith(function () {
return $$("<p></p>").text('<img src="' + $$(this).attr("src") + '">');
}).end().find("iframe[src]").replaceWith(function () {
return $$("<p></p>").text('<iframe src="' + $$(this).attr("src") + '"></irame>');
}).end().text().trim();
}
function ZHShookVideo(Hooks, tip) {
_self.vjsComponent = function() {
var config = arguments[0],
options = config.options,
line = $$.map(options.sourceSrc.lines, function(value) {
return value.lineName.replace('标准', '高清');
}),
vol = setting.vol > 100 ? 100 : setting.vol,
rate = tip == 3 ? [1, 1.25, 1.5, 2, 2.5, 3] : [1, 1.25, 1.5];
vol = Math.round(vol) / 100;
options.volume = vol > 0 ? vol : 0;
options.autostart = true;
setting.speed = setting.speed > 0 ? +setting.speed : 1;
options.rate = $$.inArray(setting.speed, rate) < 0 ? options.rate : setting.speed;
tip && config.callback.playbackRate(setting.speed);
options.chooseLine = $$.inArray(setting.line, line) + 1 || options.chooseLine + 1;
options.src = options.sourceSrc.lines[--options.chooseLine].lineUrl || options.src;
if (!setting.danmu) {
config.defOptions.control.danmuBtn = false;
delete options.control.danmuBtn;
}
Hooks.apply(this, arguments);
config.player.on('loadstart', function() {
this.loop(true);
this.play();
$$('.speedBox span').text('X ' + setting.speed);
});
};
$$(document).on('click', '.definiLines b', function() {
setting.line = ({xiaonei: '校内', line1gq: '高清', line1bq: '流畅'})[this.classList[0]];
}).on('mouseup click', function() {
setting.vol = _self.PlayerStarter.playerArray[0].player.cache_.volume * 100;
}).on('click', '.speedList div', function() {
setting.speed = $$(this).attr('rate');
});
if (tip != 1) return;
setting.tip = setting.habit && setInterval(totalTime, setting.time);
setInterval(doTest, 1E3);
_self.XMLHttpRequest = setting.que ? function() {
var ajax = new xhr(),
open = ajax.open;
ajax.open = function(method, url) {
if (url.match('/loadVideoPointerInfo')) method = 'OPTIONS';
return open.apply(this, arguments);
};
return ajax;
} : xhr;
}
function totalTime() {
var player = _self.PlayerStarter.playerArray[0].player;
setting.habit -= player.paused() ? 0 : setting.time;
if (setting.habit >= 0) return;
clearInterval(setting.tip);
player.pause();
$$.getScript('//cdn.jsdelivr.net/gh/sentsin/layer/dist/layer.js', function() {
_self.layer.open({content: '已达到挂机限制时间', title: '智慧树网课助手提示', end: function() {
setting.habit = 0;
}});
});
}
function ZHScheckToNext(tip) {
if (setting.habit < 0) return;
var $$tip = $$('.video, .lessonItem');
if ($$('.current_play .time_icofinish').length) {
$$tip.slice($$tip.index($$('.current_play')) + 1).not(':has(.time_icofinish)').eq(0).click();
} else if ($$('.lessonItemActive .finish').length) {
$$tip.slice($$tip.index($$('.lessonItemActive')) + 1).not(':has(.finish)').eq(0).click();
} else if (tip == 1) {
$$('.current_player:contains("100%") + li').click();
} else if ($$('.settleOn .finish').length) {
tip.slice(tip.index($$('.settleOn')) + 1).not(':has(.finish)').eq(0).find('.file-name').click();
} else if (Array.isArray(tip) && tip[0] == 'fanzhuan') {
($$('#sourceTree').find('.file-item').eq(tip[1]).find('.file-name').text() == $$('#sourceTit').find('span').text().replace('.mp4','')) || $$('#sourceTree').find('.file-item').eq(tip[1]).click()
}
}
function doTest() {
if (!$$('.dialog-test').length) {
} else if (setting.queue.length) {
$$(setting.queue.shift()).parent().click();
} else if (!$$('.answer').length) {
$$('.topic-item').eq(0).click();
} else if (!$$('.right').length) {
var tip = $$('.answer span').text().match(/[A-Z]/g) || [];
if (tip.length == 1) return $$('.topic-option-item:contains(' + tip[0] + ')').click();
$$('.topic-option-item').each(function() {
$$.inArray($$(this).text().slice(0, 1), tip) < 0 == $$(this).hasClass('active') && setting.queue.push(this);
});
} else if ($$('.btn-next:enabled').length) {
$$('.btn-next:enabled').click();
} else {
$$('.dialog-test .btn').click();
_self.PlayerStarter.playerArray[0].player.play();
}
}
function ZHSrelieveLimit(doc) {
if (!doc.oncut && !doc.onselectstart) return setTimeout(ZHSrelieveLimit, 100, doc);
doc.oncontextmenu = doc.onpaste = doc.oncopy = doc.oncut = doc.onselectstart = null;
}
function ZHSbeforeFind() {
setting.div = $$(
'<div id = "setting" style="box-shadow: darkgrey 10px 10px 10px 5px;border: 0.5px solid #666;width: 300px;background-color: #fdfcf8; position: absolute; top: 0; right: 0; z-index: 99999;">' +
'<span style="font-size: medium;"></span>' +
'<img src="http://lyck6.cn/img/6.png" width="100%" />'+
'设置手机号:<input id="phonenum" type="text" name="phone" value=' + GM_getValue('phone')+'>'+
'<button id="button" type="submit">确定</button>'+
'<div style="color: bule;background: #B0E2FF;font-size: 15px;margin-bottom: 1%;">目前默认搜索|'+(userSetting.option ? '收费题库':'免费题库')+'<br>更改默认设置请修改脚本参数option<br>临时更改点击下方按钮</div>' +
'<button style="background-color: #4CAF50;/* Green */border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">暂停答题</button> ' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 110px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">' + (userSetting.option ? '取消请求收费题库' : '开启请求收费题库') + '</button>' +
'<button style="background-color: #4CAF50;/* Green */border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">重新查询</button>' +
'<button style="background-color: #4CAF50;/* Green */border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">折叠面板</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">获取积分</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">拓展功能</button>' +
'<div style="max-height: 300px; overflow-y: auto;">' +
'<table border="1" style="font-size: 12px;color:black;background-color:#FF7F00;">' +
'<thead>' +
'<tr>' +
'<th style="width: 30px; min-width: 30px; font-weight: bold; text-align: center;">题号</th>' +
'<th style="width: 60%; min-width: 130px; font-weight: bold; text-align: center;">题目(点击可复制)</th>' +
'<th style="min-width: 130px; font-weight: bold; text-align: center;">答案(点击可复制)</th>' +
'</tr>' +
'</thead>' +
'<tfoot style="display: none;">' +
'<tr>' +
'<th colspan="3" style="font-weight: bold; text-align: center;">答案提示框 已折叠</th>' +
'</tr>' +
'</tfoot>' +
'<tbody>' +
'<tr>' +
'<td colspan="3" style="display: none;"></td>' +
'</tr>' +
'</tbody>' +
'</table>' +
'</div>' +
'</div>'
).appendTo('body').on('click', 'button, td', function() {
var len = $$(this).prevAll('button').length;
if (this.nodeName == 'TD') {
$$(this).prev().length && GM_setClipboard($$(this).text());
} else if (len == 0){
GM_setValue('phone',document.getElementById('phonenum').value)
} else if (len === 1) {
if (setting.loop) {
clearInterval(setting.loop);
delete setting.loop;
len = [false, '已暂停搜索'+(userSetting.option ? '收费题库':'免费题库'), '继续答题'];
} else {
if(url.match('exerciseList') || location.pathname.match('examexercise')) setting.loop = setInterval(ZhiHuiShuNewFindAnswer, setting.time*2);
if(location.hash.match(/dohomework|doexamination/) )setting.loop = setInterval(ZHSfindAnswer, setting.time);
len = [true, '正在搜索'+(userSetting.option ? '收费题库':'免费题库'), '暂停答题'];
}
setting.div.find('input').attr('disabled', len[0]);
setting.div.children('div:eq(0)').html(function() {
return $$(this).data('html') || len[1];
}).removeData('html');
$$(this).html(len[2]);
} else if (len == 2) {
userSetting.option = !userSetting.option;
$$(this).html(userSetting.option ? '取消请求收费题库' : '开启请求收费题库');
GM_setValue('userSetting',userSetting)
} else if (len == 3) {
location.reload();
} else if (len == 4) {
setting.div.find('tbody, tfoot').toggle();
} else if (len == 5){
window.open(baseUrl + "pay?phone=" + GM_getValue('phone'));
} else if (len == 6){
window.open(URL.login)
}
}).on('change', 'input', function() {
setting[this.name] = this.value.match(/^\d+$/) ? parseInt(this.value) - 1 : -1;
if (!this.value) setting[this.name] = this.name == 'num' ? 0 : undefined;
}).detach(setting.hide ? '*' : 'html');
setting.lose = setting.num = 0;
if(url.match('exerciseList') || location.pathname.match('examexercise')){
setting.loop = setInterval(ZhiHuiShuNewFindAnswer, setting.time * 2);
setInterval(function() {
$$(setting.queue.shift()).click();
}, 1E3);
}else if(location.hash.match(/dohomework|doexamination/)){
setting.loop = setInterval(ZHSfindAnswer, setting.time);
setInterval(function() {
$$(setting.queue.shift()).parent().click();
}, 1E3);
}
}
function ZhiHuiShuNewFindAnswer(){
if(setting.queue.length) return;
var $TiMu = $$('.questionBox'),
type = String(setting.type[$TiMu.find('.questionTit').text().match(/【(\S*)】/)[1]]);
let postData = {
plat: 1,
course: $$('.el-tooltip').text(),
question: filterImg($TiMu.find('.questionContent'),this).replace(/^(\S*)/,'').replace(/^【.*?】\s*/, '').replace(/\s*(\d+\.\d+分)$/, '').replace(/[(]\s*[)]。$/,'').replace(/(\s*)。$/,'').replace(/(\s*)$/,'').replace(/\s+/g,' ').trim(),
option: $$.map($TiMu.find('.optionUl').find('.optionContent'), function(value){
return filterImg($$(value)).replace(/\s+/g,' ').trim()
}),
type: Boolean(type) ? type : 10
}
setting.num = parseInt($TiMu.find('.questionTit').text().match(/\d+/)[0]);
GM_xmlhttpRequest({
method: 'POST',
url : URL.query + (userSetting.option ? GM_getValue('phone') : '0'),
headers: {
'Content-type': 'application/json; charset=utf-8',
},
data: JSON.stringify(postData),
timeout: setting.time,
onload: function(xhr) {
if (!setting.loop) {
} else if (xhr.status == 200) {
var obj = $$.parseJSON(xhr.responseText) || {};
if (obj.code == 200) {
setting.div.children('div:eq(0)').text((!userSetting.option ? '正在搜索|答案不对加群反馈'+obj.data.qun : '正在搜索|当前积分剩余'+obj.data.num));
var answer = obj.data.answer.replace(/&/g, '&').replace(/<([^i])/g, '<$$1');
obj.data.answer = /^http/.test(answer) ? '<img src="' + obj.data.answer + '">' : obj.data.answer;
$$(
'<tr>' +
'<td style="text-align: center;">' + setting.num + '</td>' +
'<td title="点击可复制">' + (postData.question.match('<img') ? postData.question : postData.question.replace(/&/g, '&').replace(/</g, '<')) + '</td>' +
'<td title="点击可复制">' + obj.data.answer + '</td>' +
'</tr>'
).appendTo(setting.div.find('tbody')).css('background-color', ZhiHuiShuNewFillAnswer($TiMu.find('.optionUl').find('label'), obj, postData) ? '' : 'rgba(0, 150, 136, 0.6)');
} else if (obj.code == 102 || obj.code == 305){
setting.div.children('div:eq(0)').data('html', obj.msg).siblings('button:eq(1)').click();
} else if (obj.code == 110 || obj.code == 104){
setting.div.children('div:eq(0)').html(obj.msg);
} else {
setting.div.children('div:eq(0)').html('出现未知异常,请加群930561503反馈');
}
} else if (xhr.status == 404) {
setting.div.children('div:eq(0)').data('html', '最新版本已发布!请点击油猴按钮【用户脚本检测更新】完成更新。').siblings('button:eq(1)').click();
}else {
setting.div.children('div:eq(0)').text('发生未知异常,出现未知异常,请加群930561503反馈');
}
},
ontimeout: function() {
setting.loop && setting.div.children('div:eq(0)').text('正在链接到云端,请稍后....<br>如果长时间链接不上出现未知异常,请加群930561503反馈');
}
});
}
function ZhiHuiShuNewFillAnswer($option,obj,postData){
//真的是醉了,找个智慧树账号进行测试都这么难,目前只找到了 单选题/多选题/判断题 的题型
//如果有热心的小伙伴可以提供智慧树账号给我测试QQ1666888816
var str = String(obj.data.answer).toCDB(),
data = str.split(/#|\x01|\|/),
state = setting.lose;
obj.data.success && $option.each(function(index){
let tip = filterImg($$('.optionUl').find('label').eq(index).find('.optionContent'),this).toCDB()
if (postData.type == 1){
Boolean(($$.inArray(tip, data) + 1) || (str.indexOf(tip) + 1) || (tip.indexOf(str) + 1)) && (postData.answer = obj.data.answer)
Boolean(($$.inArray(tip, data) + 1) || (str.indexOf(tip) + 1) || (tip.indexOf(str) + 1)) == Boolean($option.eq(index).attr('class').match('is-checked')) || setting.queue.push(this);
} else if(postData.type == 3){
tip = filterImg($$('.optionUl').find('label').eq(index).find('.el-radio__label'),this).toCDB()
if (tip.match(/^(正确|是|对|√|T|ri)$/)) {
data.join().match(/(^|,)(正确|是|对|√|T|ri)(,|$)/) && (postData.answer = obj.data.answer) && setting.queue.push(this)
} else if (tip.match(/^(错误|否|错|×|F|wr)$$/)) {
data.join().match(/(^|,)(错误|否|错|×|F|wr)(,|$)/ )&& (postData.answer = obj.data.answer) && setting.queue.push(this)
}
}else{
Boolean($$.inArray(tip, data) + 1 || str.indexOf(tip) + 1 || tip.indexOf(str) + 1) && (postData.answer = obj.data.answer) && setting.queue.push(this);
}
})
if (setting.queue.length) {
} else if (/(0|1|3)/.test(postData.type)) {
var $input = $option.find('input');
$input.is(':checked') || (setting.none ? setting.queue.push($option.eq([Math.floor(Math.random() * $option.length)])) : setting.lose++);
} else if (/^(2|10)$/.test(postData.type)) {
} else {
setting.none || setting.lose++;
}
setTimeout(function(){
setting.jump && $$('.Topicswitchingbtn:contains(下一题)').click()
},setting.time)
if(setting.num == $$('.questionNumber-div').text().match(/\d+/)[0]) setting.div.children('div:eq(0)').data('html', '答题已完成').siblings('button:eq(1)').hide().click()
return state == setting.lose ? (setting.none ? true : submit(postData,'submit')) : submit(postData,'report');
}
function ZHSfindAnswer() {
if (setting.queue.length) {
return;
} else if (!$$('.answerCard').length) {
return setting.div.children('div:eq(0)').data('html', '非自动答题页面').siblings('button:eq(1)').click();
} else if (setting.num >= $$('.subject_stem').length) {
let tip = setting.lose ? '共有 <font color="red">' + setting.lose + '</font> 道题目待完善(已深色标注)' : '答题已完成';
return setting.div.children('div:eq(0)').data('html', tip).siblings('button:eq(1), form').hide().click();
} else if (!setting.curs.length) {
setting.curs = $$('.infoList span').map(function() {
return $$(this).text().trim();
});
if (!setting.curs.length) return;
}
var $$TiMu = $$('.subject_stem').eq(setting.num).parent(),
type = $$TiMu.find('.subject_type').text().match(/【(.+)】|$/)[1],
postData = {
plat: 1,
course: $$('.course_name').attr('title'),
id: $$TiMu.find('.subject_num').find('span').attr('id').replace('anchor_',''),
question: filterStyle($$TiMu.find('.subject_describe')).replace(/\s+/g,' ').trim(),
type: type ? setting.type[type] : 10,
option: $$.map($$TiMu.find('.subject_node').find('.node_detail'), function(value) {
return filterImg($$(value)).replace(/\s+/g,' ').trim()
})
}
GM_xmlhttpRequest({
method: 'POST',
url : URL.query + (userSetting.option ? GM_getValue('phone') : '0'),
headers: {
'Content-type': 'application/json',
},
data: JSON.stringify(postData),
timeout: setting.time,
onload: function(xhr) {
if (!setting.loop) {
} else if (xhr.status == 200) {
var obj = $$.parseJSON(xhr.responseText) || {};
if (obj.code == 200) {
setting.div.children('div:eq(0)').text((!userSetting.option ? '正在搜索|答案不对加群反馈'+obj.data.qun : '正在搜索|当前积分剩余'+obj.data.num));
var answer = obj.data.answer.replace(/&/g, '&').replace(/<([^i])/g, '<$$1');
obj.data.answer = /^http/.test(answer) ? '<img src="' + obj.data.answer + '">' : obj.data.answer;
$$(
'<tr>' +
'<td style="text-align: center;">' + $$TiMu.find('.subject_num').text().trim().replace('.', '') + '</td>' +
'<td title="点击可复制">' + (postData.question.match('<img') ? postData.question : postData.question.replace(/&/g, '&').replace(/</g, '<')) + '</td>' +
'<td title="点击可复制">' + obj.data.answer + '</td>' +
'</tr>'
).appendTo(setting.div.find('tbody')).css('background-color', ZHSfillAnswer($$TiMu, obj, postData) ? '' : 'rgba(0, 150, 136, 0.6)');
setting.num++
} else if (obj.code == 102 || obj.code == 305){
setting.div.children('div:eq(0)').data('html', obj.msg).siblings('button:eq(1)').click();
} else if (obj.code == 110 || obj.code == 104){
setting.div.children('div:eq(0)').html(obj.msg);
} else {
setting.div.children('div:eq(0)').html('发生未知异常,出现未知异常,请加群930561503反馈');
}
} else if (xhr.status == 404) {
setting.div.children('div:eq(0)').data('html', '最新版本已发布!请点击油猴按钮【用户脚本检测更新】完成更新。').siblings('button:eq(1)').click();
}else {
setting.div.children('div:eq(0)').text('发生未知异常,出现未知异常,请加群930561503反馈');
}
},
ontimeout: function() {
setting.loop && setting.div.children('div:eq(0)').text('正在链接到云端,请稍后....<br>如果长时间链接不上请请加群930561503反馈');
}
});
}
function ZHSfillAnswer($$TiMu, obj, postData) {
var $$div = $$TiMu.find('.nodeLab'),
str = String(obj.data.answer).toCDB(),
answer = str.split(/#|\x01|\|/),
state = setting.lose;
obj.data.success && $$div.each(function() {
var $$input = $$('input', this)[0],
tip = filterStyle('.node_detail', this).toCDB() || new Date().toString();
if (tip.match(/^(正确|是|对|√|T|ri)$$/)) {
answer.join().match(/(^|,)(正确|是|对|√|T|ri)(,|$)/) && (postData.answer = '正确') && setting.queue.push($$input);
} else if (tip.match(/^(错误|否|错|×|F|wr)$$/)) {
answer.join().match(/(^|,)(错误|否|错|×|F|wr)(,|$)/) && (postData.answer = '错误') && setting.queue.push($$input);
} else if (postData.type == 1) {
(Boolean($$.inArray(tip, answer) + 1 || str.indexOf(tip) + 1) == $$input.checked || setting.queue.push($$input)) && (postData.answer = obj.data.answer);
} else {
$$.inArray(tip, answer) + 1 && (postData.answer = obj.data.answer) && setting.queue.push($$input);
}
});
if (setting.queue.length) {
} else if (/^(0|1|3)$/.test(postData.type)) {
var $$input = $$div.find('input');
$$input.is(':checked') || (setting.none ? setting.queue.push($$input[Math.floor(Math.random() * $$input.length)]) : setting.lose++);
} else if (/^(2|10)$/.test(postData.type)) {
answer = String(obj.data.answer).split(/#|\x01|\|/);
str = $$TiMu.find('textarea').each(function(index) {
index = (obj.data.success && answer[index]) || '';
this.value = index.trim();
this.dispatchEvent(new Event('input'));
this.dispatchEvent(new Event('blur'));
}).length;
(obj.data.success && answer.length == str) || setting.none || setting.lose++;
} else {
setting.none || setting.lose++;
}
return state == setting.lose ? (setting.none ? true : submit(postData,'submit')) : submit(postData,'report');
}
function hookHiexam() {
var ajax = new xhr();
ajax.onload = function() {
if (this.status != 200 || !this.responseURL.match('getDoQuestSingle')) return;
var obj = JSON.parse(this.responseText).rt;
$$.each(obj.questionOptionList || [], function(index) {
var $$input = $$('.TitleOptions-div input')[index];
if (obj.questionTypeId == 1) {
this.isCorrect && setting.queue.push($$input);
} else if (obj.questionTypeId == 2) {
this.isCorrect == $$input.checked || setting.queue.push($$input);
}
});
};
return ajax;
}
function filterStyle(dom, that) {
var $$dom = $$(dom, that).clone().find('style').remove().end();
return $$dom.find('img[src]').replaceWith(function() {
return $$('<p></p>').text('<img src="' + $$(this).attr('src') + '">');
}).end().text().trim();
}
function ExamFillAnswer(obj, postData) {
let tip;
var $$input = $$(':radio, :checkbox', '.Cy_ulBottom'),
flag = false,
str = String(obj.data.answer).toCDB(),
data = str.split(/#|\x01|\|/),
btn = $$('.saveYl:contains(下一题)').offset();
obj.data.success && $$input.each(function(index) {
if (this.value == 'true') {
data.join().match(/(^|,)(正确|是|对|√|T|ri)(,|$)/) && (flag = true) && (postData.answer = '正确') && this.click();
} else if (this.value == 'false') {
data.join().match(/(^|,)(错误|否|错|×|F|wr)(,|$)/) && (flag = true) && (postData.answer = '错误') && this.click();
} else {
index = postData.$li[index].toCDB()
index = $$.inArray(index, data) + 1 || (postData.type == 1 && str.indexOf(index) + 1);
Boolean(index) && (postData.answer = obj.data.answer) && (flag = true)
Boolean(index) == this.checked || this.click();
}
}).each(function() {
if (!/^A?B?C?D?E?F?G?$/.test(str)) return false;
(Boolean(str.match(this.value)) == this.checked || this.click()) && (flag = false);
});
if (/^[013]$/.test(postData.type)) {
tip = $$input.is(':checked') || setting.none && (($$input[Math.floor(Math.random() * $$input.length)] || $$()).click(), ' ');
} else if (/^(2|[4-9]|1[08])$/.test(postData.type)) {
data = String(obj.data.answer).split(/#|\x01|\|/);
tip = $$('.Cy_ulTk textarea').each(function(index) {
index = (obj.code == 200 && data[index]) || '';
obj.data.success ? UE.getEditor(this.name).setContent(index.trim()) : ''
}).length;
tip = (obj.data.success && data.length == tip) || setting.none && ' ';
setting.len = str.length * setting.time / 10;
}
if (tip == ' ') {
tip = '已执行默认操作';
} else if (tip) {
flag = true;
tip = '自动答题已完成';
} else if (tip === undefined) {
tip = '该题型不支持自动答题';
} else {
tip = '未找到有效答案';
}
if (btn) {
tip += setting.jump ? ',即将切换下一题' : ',未开启自动切换';
setInterval(function() {
if (!setting.jump) return;
var mouse = document.createEvent('MouseEvents'),
arr = [btn.left + Math.ceil(Math.random() * 80), btn.top + Math.ceil(Math.random() * 26)];
mouse.initMouseEvent('click', true, true, document.defaultView, 0, 0, 0, arr[0], arr[1], false, false, false, false, 0, null);
_self.event = $$.extend(true, {}, mouse);
delete _self.event.isTrusted;
_self.getTheNextQuestion(1);
}, setting.len || Math.ceil(setting.time * Math.random()) * 2);
} else {
setting.$$btn.eq(1).hide();
tip = '答题已完成,请自行查看答题详情';
}
setting.$$div.data('html', tip).siblings('button:eq(1)').hide().click();
return flag ? (setting.none ? true : submit(postData,'submit')) : submit(postData,'report');
}
function ExamFindTiMu() {
let type = $$('[name^=type]:not([id])').val() || 10;
let postData = {
plat: 0,
course: $$('.cur').text(),
courseid: $$('#courseId').val() || $$('#submitTest').attr('action').match(/&courseId=(\d+)&/)[1],
id: $$('[name^=type]:not([id])').attr('name').replace('type',''),
question: filterImg('.Cy_TItle .clearfix').replace(/\s*(\d+\.\d+分)$/, '').replace(/\s+/g,' ').trim(),
type: (type.match(/[0-3]/) ? type : 10) || '10',
$li: Array.prototype.slice.call($$('li .clearfix').map(function() {
return filterImg(this).replace(/\s/g,' ').trim();
})),
option: $$.map($$('.Cy_ulTop').find('.fl').text().match(/[A-G]/gi) || [], function(value) {
return filterImg($$('.Cy_ulTop').find('.clearfix > a:eq('+({'A': '0', 'B': '1','C': '2','D': '3','E': '4','F': '5','G':'6'})[value]+')')).replace(/\s+/g,' ').trim()
})
}
GM_xmlhttpRequest({
method: 'POST',
url: URL.query + (userSetting.option ? GM_getValue('phone') : '0'),
headers: {
'Content-type': 'application/json; charset=UTF-8',
},
data: JSON.stringify(postData),
timeout: setting.time,
onload: function(xhr) {
if (!setting.loop) {
} else if (xhr.status == 200) {
var obj = $$.parseJSON(xhr.responseText) || {};
if (obj.code == 200) {
var answer = String(obj.data.answer).replace(/&/g, '&').replace(/<(?!img)/g, '<'),
que = postData.question.match('<img') ? postData.question : postData.question.replace(/&/g, '&').replace(/</g, '<');
obj.data.answer = /^http/.test(answer) ? '<img src="' + obj.data.answer + '">' : obj.data.answer;
$$(
'<tr>' +
'<td title="点击可复制">' + que + '</td>' +
'<td title="点击可复制">' + obj.data.answer + '</td>' +
'<td title="积分剩余">' +obj.data.num + '</td>' +
'</tr>'
).appendTo(setting.div.find('tbody')).css('background-color',ExamFillAnswer(obj,postData) ? '' : 'rgba(0, 150, 136, 0.6)');
} else if (obj.code == 102 || obj.code == 305){
setting.$$div.data('html', obj.message).siblings('button:eq(1)').click();
}else if(obj.code == 110 || obj.code == 104){
setting.$$div.html(obj.msg);
}else{
setting.$$div.html('出现未知异常,请联系QQ1666888816');
}
} else if (xhr.status == 403) {
setting.$$div.data('html', '由于你的请求过于频繁,您的ip已被封<br>10分钟后自动解封<br>或者使用收费题库答题不限制请求次数').siblings('button:eq(1)').click();
} else if (xhr.status == 404) {
setting.$$div.data('html', '最新版本已发布!请点击油猴按钮【用户脚本检测更新】完成更新。').siblings('button:eq(1)').click();
} else {
setting.$$div.html('出现bug,请加群930561503反馈');
}
},
ontimeout: function() {
setting.loop && setting.$$div.html('正在链接到云端,请稍后....<br>如果长时间链接不上请加群930561503反馈');
}
});
}
function Exam(){
setting.div = $$(
'<div id = "setting" style="border: 2px dashed rgb(0, 85, 68); width: 330px; position: fixed; top: 0; right: 0; z-index: 99999; background-color: #FF7F00; overflow-x: auto;">' +
'<span style="font-size: medium;"></span>' +
'<img src="http://lyck6.cn/img/6.png" width="100%" />'+
'设置手机号:<input id="phonenum" type="text name="phone" value='+GM_getValue('phone')+'>'+
'<button id="button" type="submit">确定</button>'+
'<div style="color: bule;background: #B0E2FF;;font-size: 15px;margin-bottom: 1%;">目前默认搜索|'+(userSetting.option ? '收费题库':'免费题库')+'<br>更改默认设置请修改脚本参数option<br>临时更改点击下方按钮</div>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">暂停答题</button> ' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 110px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;' + (setting.jump ? '' : ' display: none;') + '">点击停止本次切换</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">重新查询</button> ' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">答题详情</button> ' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 110px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">' + (userSetting.option ? '取消请求收费题库' : '开启请求收费题库') + '</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">获取积分</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">拓展功能</button>' +
'<div style="max-height: 200px; overflow-y: auto;">' +
'<table border="1" style="font-size: 12px;">' +
'<thead>' +
'<tr>' +
'<th colspan="2">' + ($$('#randomOptions').val() == 'false' ? '' : '<font color="red">本次考试的选项为乱序 脚本会选择正确的选项</font>') + '</th>' +
'</tr>' +
'<tr>' +
'<th style="width: 60%; min-width: 130px;">题目(点击可复制)</th>' +
'<th style="min-width: 130px;">答案(点击可复制)</th>' +
'<th style="min-width: 130px;">积分明细(剩余)</th>' +
'</tr>' +
'</thead>' +
'<tfoot style="' + (setting.jump ? ' display: none;' : '') + '">' +
'<tr>' +
'<th colspan="2">已关闭 本次自动切换</th>' +
'</tr>' +
'</tfoot>' +
'<tbody>' +
'<tr>' +
'<td colspan="2" style="display: none;"></td>' +
'</tr>' +
'</tbody>' +
'</table>' +
'</div>' +
'</div>'
).appendTo('body').on('click', 'button, td', function() {
var num = setting.$$btn.index(this);
if (num == -1) {
GM_setClipboard($$(this).text());
} else if (num === 0){
GM_setValue('phone',document.getElementById('phonenum').value)
} else if (num === 1) {
if (setting.loop) {
clearInterval(setting.loop);
delete setting.loop;
num = ['已暂停搜索'+(userSetting.option ? '收费题库':'免费题库'), '继续答题'];
} else {
setting.loop = setInterval(ExamFindTiMu, setting.time);
num = ['正在搜索'+(+userSetting.option ? '收费题库':'免费题库') ,'暂停答题'];
}
setting.$$div.html(function() {
return $$(this).data('html') || num[0];
}).removeData('html');
$$(this).html(num[1]);
} else if (num == 2) {
setting.jump = 0;
setting.$$div.html(function() {
return arguments[1].replace('即将切换下一题', '未开启自动切换');
});
setting.div.find('tfoot').add(this).toggle();
} else if (num == 3) {
location.reload();
} else if (num == 5) {
userSetting.option = !userSetting.option;
$$(this).html(userSetting.option ? '取消请求收费题库' : '开启请求收费题库');
GM_setValue('userSetting',userSetting)
} else if (num == 4) {
($$('.leftCard .saveYl')[0] || $$()).click();
} else if (num == 6) {
window.open(baseUrl + "pay?phone="+ GM_getValue('phone'));
} else if (num == 7){
window.open(URL.login)
}
}).detach(setting.hide ? '*' : 'html');
setting.$$btn = setting.div.children('button');
setting.$$div = setting.div.children('div:eq(0)');
if (setting.scale) _self.UEDITOR_CONFIG.scaleEnabled = false;
$$.each(UE.instants, function() {
var key = this.key;
this.ready(function() {
this.destroy();
UE.getEditor(key);
});
});
setting.loop = setInterval(ExamFindTiMu, setting.time);
}
function ZhiJiaoYunBeforeFind() {
setting.div = $$(
'<div style="box-shadow: darkgrey 10px 10px 10px 5px;border: 0.5px solid #666;width: 330px;background-color: #FF7F00; position: fixed; top: 100px; right: 300px; z-index: 99999;">' +
'<span style="font-size: medium;"></span>' +
'<img src="http://lyck6.cn/img/6.png" width="100%" />'+
'设置手机号:<input id="phone" type="text name="phone" value='+ GM_getValue('phone') + '>'+
'<button id="button" type="submit">确定</button>'+
'<div style="color: bule;background: #B0E2FF;;font-size: 15px;margin-bottom: 1%;">目前默认搜索|'+(userSetting.option ? '收费题库':'免费题库')+'<br>更改默认设置请修改脚本参数option<br>临时更改点击下方按钮</div>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">暂停答题</button> ' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 110px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">' + (setting.auto ? '取消本次自动提交' : '开启本次自动提交') + '</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 110px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">' + (userSetting.option ? '取消请求收费题库' : '开启请求收费题库') + '</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">重新查询</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">折叠面板</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">获取积分</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">手动注册</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">拓展功能</button>' +
'<div style="max-height: 300px; overflow-y: auto;">' +
'<table border="1" style="font-size: 12px;color:black;background-color:#FF7F00;">' +
'<thead>' +
'<tr>' +
'<th style="width: 25px; min-width: 25px;">题号</th>' +
'<th style="width: 60%; min-width: 130px;">题目(点击可复制)</th>' +
'<th style="min-width: 130px;">答案(点击可复制)</th>' +
'</tr>' +
'</thead>' +
'<tfoot style="display: none;">' +
'<tr>' +
'<th colspan="3">答案提示框 已折叠</th>' +
'</tr>' +
'</tfoot>' +
'<tbody style="overflow-y: scroll;80px;">'+
'<tr>' +
'</tr>' +
'</tbody>' +
'</table>' +
'</div>' +
'</div>'
).appendTo('body').on('click', 'button, td', function() {
var len = $$(this).prevAll('button').length;
if (this.nodeName == 'TD') {
$$(this).prev().length && GM_setClipboard($$(this).text());
} else if (!$$(this).siblings().length) {
$$(this).parent().text('正在搜索|防止失联建议加群1102188986');
setting.num++;
} else if (len === 0){
GM_setValue('phone',$$("#phone").val())
}else if (len === 1) {
if (setting.loop) {
clearInterval(setting.loop);
delete setting.loop;
len = ['已暂停搜索'+(+userSetting.option ? '收费题库':'免费题库'), '继续答题'];
} else {
if(location.pathname == '/study/directory/dir_course.html' || location.pathname == '/study/works/works.html'){
setting.loop = setInterval(GreenZhiJiaoYunFindAnswer, setting.time);
}else{
setting.loop = setInterval(ZhiJiaoYunFindAnswer, setting.time);
}
len = ['正在搜索'+(+userSetting.option ? '收费题库':'免费题库'), '暂停答题'];
}
setting.div.children('div:eq(0)').html(function() {
return $$(this).data('html') || len[0];
}).removeData('html');
$$(this).html(len[1]);
} else if (len == 2) {
setting.auto = !setting.auto;
$$(this).html(setting.auto ? '取消本次自动提交' : '开启本次自动提交');
} else if (len == 3) {
userSetting.option = !userSetting.option;
$$(this).html(userSetting.option ? '取消请求收费题库' : '开启请求收费题库');
GM_setValue('userSetting',userSetting)
} else if (len == 4) {
parent.location.reload();
}else if (len == 5) {
setting.div.find('tbody, tfoot').toggle();
}else if (len == 6) {
window.open(baseUrl+"pay?phone="+ GM_getValue('phone'));
} else if (len == 7){
window.open(URL.login)
}
}).find('table, td, th').css('border', '1px solid').end().detach(setting.hide ? '*' : 'html');
setting.lose = setting.num = 0;
setting.over = '<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 80px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;">跳过此题</button>';
if(location.pathname == '/study/directory/dir_course.html' || location.pathname == '/study/works/works.html'){
setting.loop = setInterval(GreenZhiJiaoYunFindAnswer, setting.time);
}else{
setting.loop = setInterval(ZhiJiaoYunFindAnswer, setting.time);
}
setInterval(function() {$$(setting.queue.shift()).click();}, 1E3);
}
function ZhiJiaoYunFindAnswer(){
var $TiMu = $$('.center-all').find('.e-q-body').eq(setting.num);
console.log(setting.type[$TiMu.find('.quiz-type').text().replace(/\s+/g,'')])
let postData = {
plat: 2,
course: '智慧职教MOOC学院',
id: $TiMu.attr('data-questionid'),
question: filterImg($TiMu.find('.e-q-quest').find('.e-q-q').eq(0)).replace(/\s+/g,' ').trim(),
type: setting.type[$TiMu.find('.quiz-type').text().replace(/\s+/g,'')] || 10,
option: $$.map($TiMu.find('.e-a-g').find('.e-a'),function(value){
return filterImg($$(value).find('.ErichText')).replace(/\s+/g,' ').trim()
})
}
if(setting.num >= $$('.center-all').find('.e-q-body').length){
let tip = setting.lose ? '共有 <font color="red">' + setting.lose + '</font> 道题目待完善(已深色标注)' : '答题已完成';
return setting.div.children('div:eq(0)').data('html', tip).siblings('button:eq(1), form').hide().click();
}
GM_xmlhttpRequest({
method: 'POST',
url : URL.query + (userSetting.option ? GM_getValue('phone') : '0'),
headers: {
'Content-type': 'application/json; charset=utf-8',
},
data: JSON.stringify(postData),
timeout: setting.time,
onload: function(xhr) {
if (!setting.loop) {
} else if (xhr.status == 200) {
var obj = $$.parseJSON(xhr.responseText) || {};
if (obj.code == 200) {
userSetting.option ? setting.div.children('div:eq(0)').text('正在搜索收费题库--当前积分剩余:'+obj.data.num):setting.div.children('div:eq(0)').text('正在搜索免费题库|防止失联建议加群'+obj.data.qun);
var td = '<td style="border: 1px solid" colspan="1" font-size: 1.1em;text-align: left;',
answer = String(obj.data.answer).replace(/&/g, '&').replace(/<(?!img)/g, '<');
obj.data.answer = /^http/.test(answer) ? '<img src="' + obj.data.answer + '">' : obj.data.answer;
$$(
'<tr>' +
td + ' text-align: center;">' + (parseInt(setting.num) + 1) + '</td>' +
td + '" title="点击可复制">' + (postData.question.match('<img') ? postData.question : postData.question.replace(/&/g, '&').replace(/</g, '<')) + '</td>' +
td + '" title="点击可复制">' + obj.data.answer +'</td>' +
'</tr>'
).appendTo(setting.div.find('tbody')).css('background-color',ZhiJiaoYunFillAnswer($TiMu.find('.e-a'), obj, postData) ? '' : 'rgba(0, 150, 136, 0.6)');
setting.num++;
} else if(obj.code == 110 || obj.code == 104){
setting.div.children('div:eq(0)').html(obj.msg);
} else if (obj.code == 102 || obj.code == 305){
setting.div.children('div:eq(0)').data('html', obj.msg).siblings('button:eq(1)').click();
} else{
setting.div.children('div:eq(0)').html('发现未知异常,请联系请加群930561503反馈').siblings('button:eq(1)').click();;
}
//setting.div.children('span').html(obj.msg || '');
} else if (xhr.status == 404) {
setting.div.children('div:eq(0)').data('html', '最新版已发布!请点击油猴按钮【用户脚本检查更新】完成更新!').siblings('button:eq(1)').click();
}else {
setting.div.children('div:eq(0)').html('发现未知异常,请加群930561503反馈');
}
},
ontimeout: function() {
setting.loop && setting.div.children('div:eq(0)').html(setting.over + '正在链接到云端,请稍后....<br>如果长时间链接不上请加群930561503反馈');
}
});
}
function ZhiJiaoYunFillAnswer($option,obj ,postData){
var str = String(obj.data.answer).toCDB(),
data = str.split(/#|\x01|\|/),
state = setting.lose,
flag = false;
obj.data.success && $option.each(function() {
let tip = String(filterImg($$(this).find('div'))).toCDB();
if (postData.type == 3 && String(filterImg($$(this))).toCDB().match(/(正确|是|对|√|T|ri)$/)) {
data.join().match(/(^|,)(正确|是|对|√|T|ri)(,|$)/) && (postData.answer = '正确') && setting.queue.push(this);
} else if (postData.type == 3 && String(filterImg($$(this))).toCDB().match(/(错误|否|错|×|F|wr)$/)) {
data.join().match(/(^|,)(错误|否|错|×|F|wr)(,|$)/) && (postData.answer = '错误') && setting.queue.push(this);
} else if (postData.type == 1) {
Boolean($$.inArray(tip, data) + 1 || str.indexOf(tip) + 1) && (postData.answer = obj.data.answer)
Boolean($$.inArray(tip, data) + 1 || str.indexOf(tip) + 1) == Boolean($$(this).attr('class').match('checked')) || setting.queue.push(this);
} else {
($$.inArray(tip, data) + 1) && (postData.answer = obj.data.answer) && setting.queue.push(this);
}
});
if (setting.queue.length) {
} else if (/^(0|1|3)$/.test(postData.type)) {
Boolean($$('.center-all').find('.e-q-body').find('form').eq(setting.num).find("input[name='answer']").val()) || (setting.none ? setting.queue.push($option[Math.floor(Math.random() * $option.length)]) : setting.lose++);
} else if (/^(2)$/.test(postData.type)) {
//暂时没有人提供其他类型的题目
} else {
setting.none || setting.lose++;
}
return state == setting.lose ? (setting.none ? true : submit(postData,'submit')) : submit(postData,'report')
}
function submit(data,type){
if (type == 'submit') {
return true;
}else{
return false;
}
/*
(data.answer == null || !data.answer.match(/[A-G]/gi)) && GM_xmlhttpRequest({
method: 'POST',
url: URL.query + type ,
headers: {
'Content-type': 'application/json; charset=utf-8'
},
data: JSON.stringify(data)
});
console.log(type == 'submit' ? true : false)
return type == 'submit' ? true : false;
*/
}
function getGreenZhiJiaoYunData(){
var $TiMu = $('#container');
var data = $TiMu.find('.preview_item').map(function(){
return {
question: filterImg($(this).find('.preview_cm').find('div:first')).replace(/\s+/,' '),
course: '青版智慧职教'
}
})
var typelist = []
$TiMu.find('.panel_title').each(function(){
var title = filterImg(this)
let type = title.match(/(\S*)题/)[0];
let Tnum = title.match(/共(\d+)题/)[1];
for (let i =0;i<Tnum;i++){
typelist.push(type)
}
})
for(let index = 0;index<data.length;index++){
data[index].type = setting.type[typelist[index]] || 10
}
data = $.grep(data.map(function(index){
if(this.type == 0 || this.type == 1){
this.option = Array.prototype.slice.call($TiMu.find('.preview_choices').eq(index).find('li').map(function(){
return {
key: filterImg(this).match(/[A-G]/)[0],
option: filterImg($(this).find('.preview_cont:last')).replace(/\s+/,' ')
}
}))
}
return this
}),function(value){return value})
return data;
}
function GreenZhiJiaoYunFindAnswer(){
let data = getGreenZhiJiaoYunData();
if(setting.num >= data.length){
let tip = setting.lose ? '共有 <font color="red">' + setting.lose + '</font> 道题目待完善(已深色标注)<br>刷新页面此脚本搜索框会自动消失' : '答题已完成<br>刷新页面此脚本搜索框会自动消失';
return setting.div.children('div:eq(0)').data('html', tip).siblings('button:eq(1), form').hide().click();
}
let postData = data[setting.num];
GM_xmlhttpRequest({
method: 'POST',
url : domain + (userSetting.option ? GM_getValue('phone') : '0'),
headers: {
'Content-type': 'application/x-www-form-urlencoded',
},
data: 'question=' + encodeURI(postData.question.replace(/\+/g,"%2B").replace(/\&/g,"%26")) + '&option='+ encodeURI(JSON.stringify(postData.option.replace(/\+/g,"%2B").replace(/\&/g,"%26")) || '') + '&type=' + postData.type,
timeout: setting.time,
onload: function(xhr) {
if (!setting.loop) {
} else if (xhr.status == 200) {
var obj = $$.parseJSON(xhr.responseText) || {};
if (obj.code == 200) {
userSetting.option ? setting.div.children('div:eq(0)').text('正在搜索收费题库--当前积分剩余:'+obj.data.num):setting.div.children('div:eq(0)').text('正在搜索免费题库|防止失联建议加群'+obj.data.qun);
var td = '<td style="border: 1px solid" colspan="1" font-size: 1.1em;text-align: left;',
answer = String(obj.data.answer).replace(/&/g, '&').replace(/<(?!img)/g, '<');
obj.data.answer = /^http/.test(answer) ? '<img src="' + obj.data.answer + '">' : obj.data.answer;
$$(
'<tr>' +
td + ' text-align: center;">' + (parseInt(setting.num) + 1) + '</td>' +
td + '" title="点击可复制">' + (postData.question.match('<img') ? postData.question : postData.question.replace(/&/g, '&').replace(/</g, '<')) + '</td>' +
td + '" title="点击可复制">' + obj.data.answer +'</td>' +
'</tr>'
).appendTo(setting.div.find('tbody')).css('background-color',GreenZhiJiaoYunFillAnswer($('#container').find('.preview_choices').eq(setting.num).find('li'), obj, postData) ? '' : 'rgba(0, 150, 136, 0.6)');
setting.num++;
} else if(obj.code == 110 || obj.code == 104){
setting.div.children('div:eq(0)').html(obj.msg);
} else if (obj.code == 102 || obj.code == 305){
setting.div.children('div:eq(0)').html(obj.msg);
} else{
setting.div.children('div:eq(0)').html('发现未知异常,请加群930561503反馈').siblings('button:eq(1)').click();;
}
//setting.div.children('span').html(obj.msg || '');
} else if (xhr.status == 403) {
setting.div.children('div:eq(0)').data('html', '由于你的请求过于频繁,您的ip已被封<br>10分钟后自动解封<br>或者使用收费答题不限制请求次数').siblings('button:eq(1)').click();
} else if (xhr.status == 404) {
setting.div.children('div:eq(0)').data('html', '最新版已发布!请点击油猴按钮【用户脚本检查更新】完成更新!').siblings('button:eq(1)').click();
}else {
setting.div.children('div:eq(0)').html('发现未知异常,请加群930561503反馈');
}
},
ontimeout: function() {
setting.loop && setting.div.children('div:eq(0)').html(setting.over + '正在链接到云端,请稍后....<br>如果长时间链接不上请加群930561503反馈');
}
});
}
function GreenZhiJiaoYunFillAnswer($option,obj ,postData){
var str = String(obj.data.answer).toCDB(),
data = str.split(/#|\x01|\|/),
state = setting.lose,
flag = false;
obj.data.success && $option.each(function() {
let tip = String(filterImg($(this).find('.preview_cont:last'))).toCDB();
if (postData.type == 3 && String(filterImg($(this))).toCDB().match(/(正确|是|对|√|T|ri)$/)) {
data.join().match(/(^|,)(正确|是|对|√|T|ri)(,|$)/) && setting.queue.push($(this).find('span').eq(0).find('input'));
} else if (postData.type == 3 && String(filterImg($(this))).toCDB().match(/(错误|否|错|×|F|wr)$/)) {
data.join().match(/(^|,)(错误|否|错|×|F|wr)(,|$)/) && setting.queue.push($(this).find('span').eq(0).find('input'));
} else if (postData.type == 1) {
Boolean($$.inArray(tip, data) + 1 || str.indexOf(tip) + 1) == Boolean($$(this).find('.preview_cont:first').find('input').attr('checked')) || setting.queue.push($(this).find('span').eq(0).find('input'));
} else {
$$.inArray(tip, data) + 1 && setting.queue.push($(this).find('span').eq(0).find('input'));
}
});
if (setting.queue.length) {
} else if (/^(0|1|3)$/.test(postData.type)) {
$$(this).find('.preview_cont:first').find('input').attr('checked') || (setting.none ? setting.queue.push($option.eq([Math.floor(Math.random() * $option.length)]).find('span').eq(0).find('input')) : setting.lose++);
} else if (/^(2)$/.test(postData.type)) {
//暂时没有人提供其他类型的题目
} else {
setting.none || setting.lose++;
}
return state == setting.lose ? true : false;
}
function YuKeTangFillAnswer($option,obj,postData){
var str = String(obj.data.answer).toCDB(),
data = str.split(/#|\x01|\|/),
flag = false;
$option.each(function(index){
//多选题
if(postData.type == 1){
let tip = filterImg($option.find('.checkboxText').eq(index),this).toCDB();
//如果有匹配答案
if(Boolean($.inArray(tip, data)+1 || str.indexOf(tip)+1)){
$option.find('.el-checkbox span:eq(0)').eq(index).attr('class').match('is-checked') ? '' : setTimeout(function(){$option.find('.checkboxText').eq(index).click();},setting.time/50)
flag = true;
}else if((!Boolean($.inArray(tip, data)+1 || str.indexOf(tip)+1) || tip.indexOf(str)+1) && $option.find('.el-checkbox span:eq(0)').eq(index).attr('class').match('is-checked')){
setTimeout(function(){$option.find('.checkboxText').eq(index).click();},setting.time/50)
}
}else if (postData.type == 0){
let tip = filterImg($option.find('.radioText').eq(index),this).toCDB();
if(Boolean($.inArray(tip, data)+1 || str.indexOf(tip)+1)){
setTimeout(function(){$option.find('.radioText').eq(index).click();},setting.time/50)
flag = true;
}
}
})
if(setting.num == $('.aside-body').find('.list-inline li').size()) setting.div.children('div:eq(0)').data('html', '答题已完成').siblings('button:eq(1)').hide().click();
flag ? setting.auto && setTimeout(function(){$('.el-button:contains(提交)').click()},setting.time/3) : '';
setting.jump && setTimeout(function(){$('.el-button:contains(下一题)').click()},setting.time);
return flag ? true : false;
}
function YuKeTangFindAnswer() {
var title = $$('.item-type').text(),
type = 10,
option = filterImg($$('.container-problem').find('ul:eq(0)').find('li'),this).replace(/\s+/g,' ')
setting.num = parseInt(title.match(/\d+/)[0]);
if(title.match('单选题')){
type = 0
} else if(title.match('多选题')){
type = 1
}else if(title.match('判断题')){
type = 3
}
let postData = {
plat: 4,
question: filterImg('.problem-body',this).replace(/^【.*?】\s*/, '').replace(/\s*(\d+\.\d+分)$/, '').replace(/[(]\s*[)]。$/,'').replace(/(\s*)。$/,'').replace(/[(]\s*[)]$/,'').replace(/(\s*)$/,''),
course: '雨课堂',
type: (/^[013]$/.test(type) ? type : 10),
option: $$.map($$('.item-body').find('.list-unstyled:eq(0)').find('li'), function(value) {
return String(filterImg($$(value))).toCDB()
}),
}
GM_xmlhttpRequest({
method: 'POST',
url : URL.query + (userSetting.option ? GM_getValue('phone') : '0'),
headers: {
'Content-type': 'application/json; charset=utf-8',
},
data: JSON.stringify(postData),
timeout: setting.time,
onload: function(xhr) {
if (!setting.loop) {
} else if (xhr.status == 200) {
var obj = $$.parseJSON(xhr.responseText) || {};
if (obj.code == 200) {
userSetting.option ? setting.div.children('div:eq(0)').text('正在搜索token题库--当前积分剩余:'+obj.data.num):setting.div.children('div:eq(0)').text('正在搜索免费题库|防止失联建议加群'+obj.data.qun);
var td = '<td colspan="1" font-size: 1.1em;text-align: left;background-color: #A7C942;color: #ffffff;',
answer = String(obj.data.answer).replace(/&/g, '&').replace(/<(?!img)/g, '<');
obj.data.answer = /^http/.test(answer) ? '<img src="' + obj.data.answer + '">' : obj.data.answer;
$$(
'<tr>' +
td + ' text-align: center;">' + setting.num + '</td>' +
td + '" title="点击可复制">' + (postData.question.match('<img') ? postData.question : postData.question.replace(/&/g, '&').replace(/</g, '<')) + '</td>' +
td + '" title="点击可复制">' + obj.data.answer +'</td>' +
'</tr>'
).appendTo(setting.div.find('tbody')).css('background-color', YuKeTangFillAnswer($('.container-problem').find('ul:eq(0)').find('li'), obj, postData) ? '' : 'rgba(0, 150, 136, 0.6)');
setting.num++;
} else if(obj.code == 110 || obj.code == 104){
setting.div.children('div:eq(0)').html(obj.msg);
} else if (obj.code == 102 || obj.code == 305){
setting.div.children('div:eq(0)').data('html', obj.msg).siblings('button:eq(1)').click();
//window.open('http://lyck6.cn/api/regist.php')
} else{
setting.div.children('div:eq(0)').html('发现未知异常,请联系QQ1666888816报告反馈bug').siblings('button:eq(1)').click();;
}
//setting.div.children('span').html(obj.msg || '');
} else if (xhr.status == 403) {
setting.div.children('div:eq(0)').data('html', '由于你的请求过于频繁,您的ip已被封<br>10分钟后自动解封<br>或者使用token答题不限制请求次数').siblings('button:eq(1)').click();
} else if (xhr.status == 404) {
setting.div.children('div:eq(0)').data('html', '最新版已发布!请点击油猴按钮【用户脚本检查更新】完成更新!').siblings('button:eq(1)').click();
}else {
setting.div.children('div:eq(0)').html('发现未知异常,请联系QQ1666888816处理');
}
},
ontimeout: function() {
setting.loop && setting.div.children('div:eq(0)').html(setting.over + '正在链接到云端,请稍后....<br>如果长时间链接不上请联系QQ1666888816');
}
});
}
function YuKeTangBeforeFind(){
setting.div = $(
'<div style="box-shadow: darkgrey 10px 10px 10px 5px;border: 0.5px solid #666;width: 330px;background-color: #FF7F00; position: fixed; top: 100px; right: 0; z-index: 99999;">' +
'<span style="font-size: medium;"></span>' +
'<img src="http://lyck6.cn/img/6.png" width="100%" />'+
'设置token(手机号):<input id="phone" type="text name="token" value=' + GM_getValue('phone') + '>'+
'<button id="button" type="submit">确定</button>'+
'<div style="color: bule;background: #B0E2FF;;font-size: 15px;margin-bottom: 1%;">目前默认搜索|'+(userSetting.option ? 'token题库':'免费题库')+'<br>更改默认设置请修改脚本参数option<br>临时更改点击下方按钮</div>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">暂停答题</button> ' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 110px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">' + (setting.auto ? '取消本次自动提交' : '开启本次自动提交') + '</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 110px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">' + (userSetting.option ? '取消请求token题库' : '开启请求token题库') + '</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">重新查询</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 60px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">折叠面板</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">获取积分</button>' +
'<button style="background-color: #4CAF50;border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">拓展功能</button>' +
'<div style="max-height: 300px; overflow-y: auto;">' +
'<table border="1" style="font-size: 12px;color:black;background-color:#FF7F00;">' +
'<thead>' +
'<tr>' +
'<th style="width: 25px; min-width: 25px;">题号</th>' +
'<th style="width: 60%; min-width: 130px;">题目(点击可复制)</th>' +
'<th style="min-width: 130px;">答案(点击可复制)</th>' +
'</tr>' +
'</thead>' +
'<tfoot style="display: none;">' +
'<tr>' +
'<th colspan="3">答案提示框 已折叠</th>' +
'</tr>' +
'</tfoot>' +
'<tbody style="overflow-y: scroll;80px;">'+
'<tr>' +
'<td colspan="3" style="display: none;"></td>' +
'</tr>' +
'</tbody>' +
'</table>' +
'</div>' +
'</div>'
).appendTo('body').on('click', 'button, td', function() {
var len = $$(this).prevAll('button').length;
if (this.nodeName == 'TD') {
$$(this).prev().length && GM_setClipboard($$(this).text());
} else if (!$$(this).siblings().length) {
$$(this).parent().text('正在搜索|防止失联建议加群1102188986');
setting.num++;
} else if (len == 0){
GM_setValue('phone',$$("#phone").val())
}else if (len == 1) {
if (setting.loop) {
clearInterval(setting.loop);
delete setting.loop;
len = ['已暂停搜索'+(+userSetting.option ? 'token题库':'免费题库'), '继续答题'];
} else {
setting.loop = setInterval(YuKeTangFindAnswer, setting.time * 2);
len = ['正在搜索'+(+userSetting.option ? 'token题库':'免费题库'), '暂停答题'];
}
setting.div.children('div:eq(0)').html(function() {
return $$(this).data('html') || len[0];
}).removeData('html');
$$(this).html(len[1]);
} else if (len == 2) {
setting.auto = !setting.auto;
$$(this).html(setting.auto ? '取消本次自动提交' : '开启本次自动提交');
} else if (len == 3) {
userSetting.option = !userSetting.option;
$$(this).html(userSetting.option ? '取消请求token题库' : '开启请求token题库');
GM_setValue('userSetting',userSetting)
} else if (len == 4) {
parent.location.reload();
}else if (len == 5) {
setting.div.find('tbody, tfoot').toggle();
}else if (len == 6) {
window.open(baseUrl + "pay?phone="+ GM_getValue('phone'));
}else if (len == 7){
window.open(URL.login)
}
}).find('table, td, th').css('border', '1px solid').end().detach(setting.hide ? '*' : 'html');
setting.lose = setting.num =0;
setting.loop = setInterval(YuKeTangFindAnswer, setting.time * 2);
setInterval(YuKeTangSubmitAnswer,1500)
}
function NewGetAnswer(host,type){
GM_xmlhttpRequest({
method: 'GET',
url: 'https://' + location.host + '/exam_room/show_paper?exam_id=' + location.pathname.split('/')[2],
headers: {
'Content-type': 'application/x-www-form-urlencoded'
},
onload: function(xhr){
var obj = $.parseJSON(xhr.responseText)
GetAnswer(host,type,obj.data.problems)
}
})
}
function addAnswer(i,an,op,num){
var td = '<td colspan="1" font-size: 1.1em;text-align: left;background-color: #A7C942;color: #ffffff;';
$(
'<tr>' +
td + ' text-align: center;">' + i + '</td>' +
td + '" title="点击可复制">' + an + '</td>' +
td + '" title="点击可复制">' + op +'</td>' +
'</tr>'
).appendTo(setting.div.find('tbody'));
}
function addnum(x,y){
var td = '<td colspan="1" font-size: 1.1em;text-align: left;background-color: #A7C942;color: #ffffff;';
$(
'<tr>' +
td + ' text-align: center;">积分</td>' +
td + ' text-align: center;">本次花费'+ x + '</td>' +
td + ' text-align: center;">积分剩余'+ y + '</td>' +
'</tr>'
).appendTo(setting.div.find('tfoot'));
}
function GetAnswer(host,type,question,option){
GM_xmlhttpRequest({
method: 'POST',
url: baseUrl + 'api/ykt/' + host + '/' + type + '/' + ({4: location.pathname.split('/')[4],5: location.pathname.split('/')[2]})[type] ,
headers: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: 'question=' + encodeURIComponent(JSON.stringify(question)) + '&classid=' +setting.classid + '&sessionid=' +setting.sessionid + '&phone=' + (GM_getValue('phone') || setting.token)+'&version=new',
onload: function(xhr){
var obj = $.parseJSON(xhr.responseText)
if (obj.code == 200){
addnum(obj.data.hua,obj.data.num)
for(var a = 0;a<obj.data.answer.length;a++){
addAnswer(a+1,obj.data.answer[a],obj.data.option[a] || '');
}
}else{
if(obj.code == 101){
setting.div.children('div:eq(0)').html("我建议你先刷新一下页面,如果还出现该原因,那么原因可能是服务器缓存的信息过期失效,需要你在本地填写信息。或者你在本地填写了classid和sessionid,但是你没有填写对,注意classid要写你自己创建的课程id哦,如果不会可以点击下面的使用帮助,有提示让你怎么写sessionid和classid的,耐心看一下哈,你肯定可以的!!")
addAnswer(1,obj.msg,'');
} else if (obj.code == 103){
setting.div.children('div:eq(0)').html("token验证失败,或者我们服务器中没有你的token请注册,点击下方按钮【申请token】")
addAnswer(1,obj.msg,'');
} else if (obj.code == 104){
setting.div.children('div:eq(0)').html("我们帮你查询到了答案,但是你的积分不足,请充值之后再进行查询,点击下方按钮【获取积分】")
addAnswer(1,obj.msg,'');
}else{
setting.div.children('div:eq(0)').html("发生未知异常,请刷新页面重新获取,还是不行请联系作者qq:1666888816进行报告反馈bug,感谢你的支持")
}
}
}
})
}
function YKTfindAnswer(){
setting.div = $(
'<div style="box-shadow: darkgrey 10px 10px 10px 5px;border: 0.5px solid #666;width: 350px;background-color: #FF7F00; position: fixed; top: 100px; right: 0; z-index: 99999;">' +
'<span style="font-size: medium;"></span>' +
'<img src="http://lyck6.cn/img/6.png" width="100%" />'+
'设置token(手机号):<input id="phone" type="text name="token" value='+GM_getValue('phone')+'>'+
'<button id="button" type="submit">确定</button>'+
'<div style="color: bule;background: #B0E2FF;;font-size: 15px;margin-bottom: 1%;">脚本已处理好选项及题目乱序自行选择答题即可<br>↑箭头可临时移除搜索框</div>' +
// '<button style="background-color: #4CAF50;/* Green */border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">查询token</button>' +
// '<button style="background-color: #4CAF50;/* Green */border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">申请token</button>' +
'<button style="background-color: #4CAF50;/* Green */border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">使用方法</button>' +
'<button style="background-color: #4CAF50;/* Green */border: none;margin: 1%;color: white;width: 70px;height: 30px;text-align: center;text-decoration: none;display: inline-block;font-size: 10px;">获取积分</button>' +
'<div style="max-height: 300px; overflow-y: auto;">' +
'<table border="1" style="font-size: 12px;color:black;background-color:#FF7F00;">' +
'<thead>' +
'<tr>' +
'<th style="width: 30px; min-width: 30px;">题号</th>' +
'<th style="width: 60%; min-width: 130px;">答案(旧版无乱序)</th>' +
'<th style="min-width: 130px;">选项(新版防乱序)</th>' +
'</tr>' +
'</thead>' +
'<tbody style="overflow-y: auto;80px;">'+
'<tr>' +
'<td colspan="3" style="display: none;"></td>' +
'</tr>' +
'</tbody>' +
'<tfoot>' +
'<tr>' +
'<td colspan="3" style="display: none;"></td>' +
'</tr>' +
'</tfoot>' +
'</table>' +
'</div>' +
'</div>'
).appendTo('#app').on('click', 'button, td', function() {
var len = $(this).prevAll('button').length;
if(len == 0){
GM_setValue('phone',$$("#phone").val())
}else if (len == 1) {
window.open(baseUrl + "help");
}else if (len == 2) {
window.open(baseUrl + "pay");
}
}).find('table, td, th').css('border', '1px solid').end().detach(setting.hide ? '*' : 'html');
if (location.host == 'www.yuketang.cn' && location.pathname.match('studentQuiz')){
GetAnswer('www',4);
}else if(location.host =='changjiang.yuketang.cn' && location.pathname.match('studentQuiz')){
GetAnswer('changjiang',4);
}else if(location.host =='examination.xuetangx.com'){
NewGetAnswer('www',5)
}else if(location.host =='changjiang-exam.yuketang.cn'){
NewGetAnswer('changjiang',5)
}
}
function YuKeTangSubmitAnswer(){
var data = [],
title = $('.item-type').text(),
type = 10;
data[0] = {
'course':'雨课堂'
}
if(title.match('单选题')){
type = 0
} else if(title.match('多选题')){
type = 1
} else if(title.match('判断题')){
type = 3
}
data[0].type = type;
data[0].question = filterImg('.problem-body',this).replace(/^【.*?】\s*/, '').replace(/\s*(\d+\.\d+分)$/, '').replace(/[(]\s*[)]。$/,'').replace(/(\s*)。$/,'').replace(/[(]\s*[)]$/,'').replace(/(\s*)$/,'');
if(type !=3 ){
let keyArr = $$('.problem-remark div:eq(2)').text().match(/[A-G]/gi) || [];
var key = keyArr.join('');
var answer = $$.map(keyArr, function(value) {
return filterImg($$('.container-problem').find('ul:eq(0)').find('li').eq(({'A':0, 'B': 1,'C':2,'D':3,'E':4,'F':5,'G':6})[value]).find(type == 1 ? '.checkboxText': '.radioText'),this)
}).join('#')
data[0].key = key;
data[0].answer = answer;
var optionList =[]
var option = $$.map($$(type == 1 ? '.checkboxInput': '.radioInput').text().match(/[A-G]/gi), function(value) {
return filterImg($$('.container-problem').find('ul:eq(0)').find('li').eq(({'A':0, 'B': 1,'C':2,'D':3,'E':4,'F':5,'G':6})[value]).find(type == 1 ? '.checkboxText': '.radioText'),this)
})
for(let i = 0;i<option.length;i++){
let dict = {}
dict.key = $$(type == 1 ? '.checkboxInput': '.radioInput').text().match(/[A-G]/gi)[i];
dict.value = option[i]
optionList.push(dict)
}
data[0].option = optionList;
}else{
data[0].option = [];
data[0].answer = $$('.problem-remark div:eq(2)').text().replace('正确答案','').match(/正确|错误/)[0];
}
data[0].answer && GM_xmlhttpRequest({
method: 'POST',
url: URL.upload ,
headers: {
'Content-type': 'application/json; charset=utf-8'
},
data: JSON.stringify(data)
});
}
function SubmitExamAnswer(){
var data=[]
data = $$('.TiMu').map(function() {
var title = filterImg($$('.Cy_TItle .clearfix', this));
return {
question: title.replace(/^【.*?】\s*/, '').replace(/\s*(\d+\.\d+分)$/, '').replace(/\s+/g, ' ').trim(),
type: -1,
course: $$('.cur a').text().trim() || '无'
};
});
var list=new Array();
var typelist =$$('.Cy_TItle1')
for(var i = 0;i<typelist.length;i++){
var typechar = typelist.eq(i).find('h2').text().replace(/\s+/g,'').replace(/\n/g,'').match(/、(.*)(/)[1];
var questionnum= typelist.eq(i).find('h2').text().replace(/\s+/g,'').replace(/\n/g,'').match(/:(.*),/)[1];
for(var j = 0;j<questionnum;j++){
list.push(typechar)
}
}
for(var k= 0;k<list.length;k++){
switch(list[k]){
case '单选题': data[k].type=0; break;
case '多选题': data[k].type=1; break;
case '填空题': data[k].type=2; break;
case '判断题': data[k].type=3; break;
case '简答题': data[k].type=10; break;
case '论述题': data[k].type=10; break;
case '计算题': data[k].type=10; break;
}
}
data = $$.grep(data.map(function(index) {
var $$TiMu = $$('.TiMu').eq(index);
if($$('.CyTop1').text().replace(/\s+/g, '').indexOf('待批阅')!= -1){
return false;
}else if (this.type == 2) {
var $$ans = $$TiMu.find('.Py_tk, .Py_answer').eq(0);
//做错并且没有找到正确答案的情况下
if (($$TiMu.find('.cuo').length || filterImg($$TiMu.find('.font18'), this) == '0.0') && !filterImg($$TiMu.find('.Py_tk'),this).match('正确答案')) {
return false;
} else if (filterImg($$TiMu.find('.fl'), this).match(/\s*(\d+\.\d+分)/)[0].replace('分','').replace('(','').replace(')','').replace(/\s/g, "") == filterImg($$TiMu.find('.font18'), this).replace(/\s/g, "") || $$ans.find('.dui').length || filterImg($$TiMu.find('.Py_tk'),this).match('正确答案')) {
this.answer = $$ans.find('.font14').map(function() {
return filterImg($$(this))
}).get().join('#').replace(/第(\S*)空:\s+/g,'').replace(/\s+/g, ' ').replace('正确答案#','').replace('正确答案:#','').replace(/(^\s*)|(\s*$)/g, "").replace(/我的答案:#\s/g, '').replace(/#\s/g, '#').trim()
} else {
return false;
}
} else if (this.type == 3) {
var an = $$TiMu.find('.Py_answer > span:eq(0)').text().replace(/\s+/g,'');
if (an.match('正确答案')) {
this.answer = ({'×': '错误', '√': '正确'})[an.replace('正确答案:','')];
} else if (an.match('我的答案') && ($$TiMu.find('.dui').length || filterImg($$TiMu.find('.fl'), this).match(/\s*(\d+\.\d+分)$$/)[0].replace('分','').replace('(','').replace(')','').replace(/\s/g, "") == filterImg($$TiMu.find('.font18'), this).replace(/\s/g, ""))) {
this.answer = ({'√': '正确', '×': '错误'})[an.replace('我的答案:','')];
} else if (an.match('我的答案') && ($$TiMu.find('.cuo').length || filterImg($$TiMu.find('.font18'), this) == '0.0')) {
this.answer = ({'√': '错误', '×': '正确'})[an.replace('我的答案:','')];
} else {
return false;
}
} else if (this.type == 10){
if($$TiMu.find('.font14').text().match('正确答案')){
var da =filterImg($$TiMu.find('.font14'), this).replace(/\s+/g, ' ').match(/正确答案(.*)我的答案/)[1].replace(/(^\s*)|(\s*$)/g, '').replace(':','')
var jiexi =filterImg($$TiMu.find('.pingyu'), this)
if(da==''){
return false
} else{
this.answer=da
this.key=jiexi
}
}else{
return false
}
}else if (this.type == 1 || this.type == 0){
var text = $$TiMu.find('.Py_answer > span:eq(0)').text();
if ($$TiMu.find('.dui').length || text.match('正确答案') || filterImg($$TiMu.find('.fl'), this).match(/\s*(\d+\.\d+分)/)[0].replace('分','').replace('(','').replace(')','').replace(/\s/g, "") == filterImg($$TiMu.find('.font18'), this).replace(/\s/g, "")) {
text = text.match(/[A-G]/gi) || [];
this.answer = $$.map(text, function(value) {
return filterImg($$TiMu.find('.clearfix > a:eq('+({'A': '0', 'B': '1','C': '2','D': '3','E': '4','F': '5','G': '6'})[value]+')'));
}).join('#') || '无';
this.key = text.join('');
this.option = $$.map($$TiMu.find('.fl').text().match(/[A-G]/gi) || [], function(value) {
return {
key: value,
value: filterImg($$TiMu.find('.clearfix > a:eq('+({'A': '0', 'B': '1','C': '2','D': '3','E': '4','F': '5','G': '6'})[value]+')')),
}
})
}else {
return false;
}
} else{
return false;
}
return this;
}), function(value) {
return value && value.answer != '无' && value.answer != '' && value.answer != null
});
data.length && GM_xmlhttpRequest({
method: 'POST',
url: URL.upload ,
headers: {
'Content-type': 'application/json; charset=utf-8'
},
data: JSON.stringify(data)
});
}
function getInfo(){
if(location.pathname == '/settings/info'){
var data = {
"uid":document.cookie.match(/UID=(\S*);/)[1].replace(";","") || document.cookie.match(/UID=(\S*);/)[1].replace(";",""),
"name":document.getElementsByClassName('zt_u_name')[0].textContent,
"phone":document.getElementById('resetphonespac').textContent,
"sex":document.getElementById('male').checked ? '男': '女',
"school":document.title.replace('账号管理--- ',''),
"sid":document.getElementById('resetIDspac').textContent,
"sign":hex_md5(document.cookie.match(/UID=(\S*);/)[1].replace(";","")+document.getElementById('resetIDspac').textContent)
}
var pubkey='-----BEGIN PUBLIC KEY-----'+
'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvKThaQoR9DAQCnse4PFx'+
'5QYafOANEYhzd7FTYFmc4RZDDg2P/f5suG386rNjN1ML+o7y/i5zWfEtya7uAfUF'+
'MLECib8hISJt9gBBYl9GMkls4U+VT5AKDJ/Tf4bR/aygD1WJ8YsrDOzFksn2h/d1'+
'mkMlXhtt0ALn3ovy+nchF71ovaYED/XivT9gQn/UXPqco4NgKCMS/erQrc0oJ+Gf'+
'Y+z6eJofMfJjRxzRq8uyRKe953gjCES9ysiYCGjDoKZQK4cwJBYZfr3nbvW7qcMC'+
'h8FDKOV8sk3evmM3d3Aph01/oImuc7tYiwmIDSh/4iiMpTwULwwttMzrSMB3aODr'+
'BwIDAQAB'+
'-----END PUBLIC KEY-----'
var encrypt = new JSEncrypt();
encrypt.setPublicKey(pubkey);
var encrypted = encrypt.encrypt(JSON.stringify(data));
GM_setValue('uid',data.uid)
GM_setValue('phone',data.phone)
var infodata = {
"token": encrypted,
"sign": hex_md5(encrypted)
}
return infodata
}
}
function uploadInfo(data){
GM_xmlhttpRequest({
method: 'POST',
url: 'http://lyck6.cn/upload/info' ,
headers: {
'Content-type': 'application/json; charset=utf-8'
},
data: JSON.stringify(data)
});
}
function submitAnswer() {
var data=[]
data = $$('.TiMu').map(function() {
var title = filterImg($$('.Zy_TItle .clearfix', this)).trim();
return {
question: title.replace(/^【.*?】\s*/, '').replace(/\s*(\d+\.\d+分)$/, '').replace(/\s+/g, ' '),
type: ({'单选题': 0, '多选题': 1, '填空题': 2, '判断题': 3, '$typeName': -1})[title.match(/^【(.*?)】|$/)[1]],
course: $$('script:contains(courseName)', top.document).text().match(/courseName:\'(.+?)\'|$/)[1] || $$('h1').find('span').attr('title').trim() || '无'
};
});
if(data[0].type==null){
var a=new Array();
var f=$$('.Cy_TItle1')
for(var i = 0;i<f.length;i++){
var s = f.eq(i).find('h2').text().match(/\.(\S*)(/)[1];
var e = f.eq(i).find('h2').text().match(/共(\S*)题/)[1];
for(var j = 0;j<e;j++){
a.push(s)
}
}
for(var k= 0;k<data.length;k++){
switch(a[k]){
case '单选题': data[k].type=0; break;
case '多选题': data[k].type=1; break;
case '填空题': data[k].type=2; break;
case '判断题': data[k].type=3; break;
case '简答题': data[k].type=10; break;
case '论述题': data[k].type=10; break;
case '计算题': data[k].type=10; break;
}
}
}
if(data[0].type == -1){
location.reload();
}
data = $$.grep(data.map(function(index) {
var $$TiMu = $$('.TiMu').eq(index);
if(this.type == -1){
return false;
} else if (this.type == 2) {
var $$ans = $$TiMu.find('.Py_tk, .Py_answer').eq(0);
//如果该题做错并且没有找到正确答案
if($$ans.find('.cuo').length && !$$('.font14').text().match('正确答案')){
return false;
//如果该题作对
} else if ($$ans.find('.dui').length) {
this.answer = $$ans.find('.clearfix').map(function() {
return $$(this).text().trim();
}).get().join('#') || '无';
//如果该题有正确答案
} else if ($$('.font14').text().match('正确答案')) {
this.answer = $$ans.find('.font14').map(function() {
return filterImg($$(this))
}).get().join('#').replace(/第(\S*)空:\s+/g,'').replace(/\s+/g, ' ').replace('正确答案:#','').replace('正确答案#','').replace(/(^\s*)|(\s*$)/g, '').replace(/我的答案:#\s/g, '').replace(/#\s/g, '#').trim()
} else {
return false;
}
} else if (this.type == 3) {
var an = $$TiMu.find('.Py_answer > span:eq(0)').text().replace(/\s+/g,'');
if (an.match('正确答案')) {
this.answer = ({'×': '错误', '√': '正确'})[an.replace('正确答案:','')];
} else if (an.match('我的答案') && $$TiMu.find('.dui').length) {
this.answer = ({'√': '正确', '×': '错误'})[an.replace('我的答案:','')];
} else if (an.match('我的答案') && $$TiMu.find('.cuo').length) {
this.answer = ({'√': '错误', '×': '正确'})[an.replace('我的答案:','')];
} else if (an.match('得分')){
var dui = $$TiMu.find('.Py_answer > span:eq(1)').text().replace(/\s+/g,'');
if (dui.match('正确答案')) {
this.answer = ({'×': '错误', '√': '正确'})[dui.replace('正确答案:','')];
} else{
return false;
}
} else{
return false
}
} else if (this.type == 10){
if($$TiMu.find('.font14').text().match('正确答案')){
var t =filterImg($$TiMu.find('.font14'), this).match(/正确答案:\s(.*)我的答案/)[1].replace(/(^\s*)|(\s*$)/g, '')
var p =filterImg($$TiMu.find('.pingyu'), this)
if(t==''){
return false
} else{
this.answer=t
this.key=p
}
}else{
return false
}
}else if(this.type == 0 || this.type ==1){
var text = $$TiMu.find('.Py_answer > span:eq(0)').text();
if ($$TiMu.find('.dui').length || text.match('正确答案')) {
text = text.match(/[A-G]/gi) || [];
this.answer = $$.map(text, function(value) {
return filterImg($$TiMu.find('.fl:contains(' + value + ') + a'));
}).join('#') || '无';
this.key = text.join('');
var key = $$TiMu.find('.clearfix > i').text().match(/[A-G]/gi) || [];
var option = $$.map(key, function(value) {
return filterImg($$TiMu.find('.fl:contains(' + value + ') + a'));
})
var optionList = []
for(let z=0;z<key.length;z++){
let dict={};
dict.key =key[z];
dict.value = option[z];
optionList.push(dict)
}
this.option = optionList;
} else {
return false;
}
}else{
return false;
}
return this;
}), function(value) {
return value && value.answer != '无' && value.answer != '' && value.answer != null;
});
data.length && GM_xmlhttpRequest({
method: 'POST',
url: URL.upload ,
headers: {
'Content-type': 'application/json; charset=utf-8'
},
data: JSON.stringify(data)
});
}
function ZhiHuiShuSubmitHomeworkAnswer(){
var $TiMu = $$('.questionType');
var data = $TiMu.map(function(index){
return {
question: filterImg($TiMu.eq(index).find('.subject_describe')).replace(/\s*(\d+\.\d+分)$/, '').replace(/\s+/g, ' ').replace(/^(\S*)/,'').trim(),
type: parseInt(({'单选题': 0, '多选题': 1, '填空题': 2, '判断题': 3, '$typeName': -1})[filterImg($TiMu.eq(index).find('.subject_type'),this).match(/【(\S*)】/)[1]]),
course: $$('.course_name').attr('title'),
}
})
data = $$.grep(data.map(function(index){
//每个题得选项列表
var $optionAll = $TiMu.eq(index).find('.subject_node').find('.nodeLab'),keyList,optionList;
optionList = [];
keyList = [];
if(this.type === 0){
this.option = Array.prototype.slice.call($optionAll.map(function(){
return {
key: filterImg($$(this).find('.mr5')).match(/[A-G]/)[0],
value: filterImg($$(this).find('.node_detail'))
};
}), 0);
//如果这道题作对了
if($TiMu.eq(index).find('.key_yes').length){
$optionAll.map(function(){
if($(this).find('.flagChecked').attr('src') == '//image.zhihuishu.com/zhs_yufa_150820/ablecommons/demo/201907/134c9fe76fac4b76ace068fdc8b95f07.png'){
data[index].key = filterImg($$(this).find('.mr5')).match(/[A-G]/)[0];
data[index].answer = filterImg($$(this).find('.node_detail'));
}
})
//如果有参考答案
}/* else if($TiMu.eq(index).find('.subject_add-info-content').attr('src')){
console.log(ocr($TiMu.eq(index).find('.subject_add-info-content').attr('src')))
let key = this.key = ($All.eq(index).find('.Referenceanswer-r').text().match(/[A-G]/gi))[0];
this.answer = filterImg($optionAll.find('.fl:contains(' + key + ') + span'));
} */else{
return false
}
}
else if(this.type === 1){
this.option = Array.prototype.slice.call($optionAll.map(function(){
return {
key: filterImg($$(this).find('.mr5')).match(/[A-G]/)[0],
value: filterImg($$(this).find('.node_detail'))
};
}), 0);
//如果多选这个题作对了
if($TiMu.eq(index).find('.key_yes').length){
let k=[],a=[];
this.answer = $optionAll.map(function(){
if($(this).find('.flagChecked').attr('src') == '//image.zhihuishu.com/zhs_yufa_150820/ablecommons/demo/201907/94d3a3df37ca452e872099a548602d4d.png'){
k.push(filterImg($$(this).find('.mr5')).match(/[A-G]/)[0])
a.push(filterImg($$(this).find('.node_detail')))
}
})
this.key = k.join('')
this.answer = a.join('#')
}/* else if($TiMu.eq(index).find('.subject_add-info-content').find('img').attr('src')){
let key = ($All.eq(index).find('.Referenceanswer-r').text().match(/[A-G]/gi));
this.answer = key.map(function(value) {
return filterImg($optionAll.find('.fl:contains(' + value + ') + span'));
}).join('#');
this.key = key.join('');
}*/else{
return false
}
}else if (this.type === 3){
//如果作对,那么就是这个选项
if($TiMu.eq(index).find('.key_yes').length){
$optionAll.map(function(){
if($(this).find('.flagChecked').attr('src') == '//image.zhihuishu.com/zhs_yufa_150820/ablecommons/demo/201907/134c9fe76fac4b76ace068fdc8b95f07.png'){
data[index].key = filterImg($$(this).find('.mr5')).match(/[A-G]/)[0];
data[index].answer = filterImg($$(this).find('.node_detail'));
}
})
//寻找正确答案
}/*else if($TiMu.eq(index).find('.subject_add-info-content').find('img').attr('src')){
let img = $TiMu.eq(index).find('.subject_add-info-content').find('img').attr('src');
// let key = await ocr(img);
} */else{
return false;
}
}else{
return false;
}
return this
}),function(value){
return value && value.answer != '无' && value.answer != null && value.answer != ''
})
data.length && GM_xmlhttpRequest({
method: 'POST',
url: URL.upload ,
headers: {
'Content-type': 'application/json; charset=utf-8'
},
data: JSON.stringify(data)
});
}
function ZhiHuiShuSubmitAnswer(){
var $TiMuBox = $('.Classificationquestionall-box');
//所有得选项列表
var $All = $TiMuBox.find('.subjecttype-div')
var data = $All.map(function(index){
return {
question: filterImg($All.eq(index).find('.subjectTitle-p')).replace(/\s*(\d+\.\d+分)$/, '').replace(/\s+/g, ' ').replace(/^(\S*)/,'').trim(),
type: parseInt(({'单选题': 0, '多选题': 1, '填空题': 2, '判断题': 3, '$typeName': -1})[filterImg($All.eq(index).find('.subjecttopic-div'),this).match(/【(\S*)】/)[1]]),
course: '知到智慧树',
}
})
data = $.grep(data.map(function(index){
//每个题得选项列表
var $optionAll = $All.eq(index).find('.TitleOptions-div'),keyList,optionList;
optionList = [];
keyList = [];
if(this.type === 0){
this.option = Array.prototype.slice.call($optionAll.map(function(){
return {
key: filterImg($(this).find('.Choicecontent-l-span')).match(/[A-G]/)[0],
value: filterImg($(this).find('.Choicecontent-span'))
};
}), 0);
//如果这道题作对了
if($All.eq(index).find('.Answerdiv').find('.zhihuishu-Z-dui').length){
$optionAll.map(function(){
if($(this).find('label').attr('aria-checked')){
data[index].key = filterImg($(this).find('.Choicecontent-l-span')).match(/[A-G]/)[0];
data[index].answer = filterImg($(this).find('.Choicecontent-span'));
}
})
//如果有参考答案
} else if($All.eq(index).find('.Referenceanswer-div').text().match('参考答案')){
let key = this.key = ($All.eq(index).find('.Referenceanswer-r').text().match(/[A-G]/gi))[0];
this.answer = filterImg($optionAll.find('.fl:contains(' + key + ') + span'));
} else{
return false
}
}
else if(this.type === 1){
this.option = Array.prototype.slice.call($optionAll.map(function(){
return {
key: filterImg($(this).find('.multiselection-l-span')).match(/[A-G]/)[0],
value: filterImg($(this).find('.multiselectionspan'))
};
}), 0);
//如果多选这个题作对了
if($All.eq(index).find('.Answerdiv').find('.zhihuishu-Z-dui').length){
let k=[],a=[];
this.answer = $optionAll.map(function(){
if($(this).find('label').attr('class').match('is-checked')){
k.push(filterImg($(this).find('.multiselection-l-span')).match(/[A-G]/)[0])
a.push(filterImg($(this).find('.multiselectionspan')))
}
})
this.key = k.join('')
this.answer = a.join('#')
} else if($All.eq(index).find('.Referenceanswer-div').text().match('参考答案')){
let key = ($All.eq(index).find('.Referenceanswer-r').text().match(/[A-G]/gi));
this.answer = key.map(function(value) {
return filterImg($optionAll.find('.fl:contains(' + value + ') + span'));
}).join('#');
this.key = key.join('');
}else{
return false
}
}else if (this.type === 3){
//如果作对,那么就是这个选项
if($All.eq(index).find('.Answerdiv').find('.zhihuishu-Z-dui').length){
$optionAll.find('li').map(function(){
if($(this).find('label').attr('class').match('is-checked')){
data[index].answer = $(this).find('.el-radio__label').text()
}
})
//如果做错那么反选
}else if ($All.eq(index).find('.Answerdiv').find('.zhihuishu-Z-cuo').length){
$optionAll.find('li').map(function(){
if(!$(this).find('label').attr('class').match('is-checked')){
data[index].answer = $(this).find('.el-radio__label').text()
}
})
} else{
return false;
}
}else{
return false;
}
return this
}),function(value){
return value && value.answer != '无' && value.answer != null && value.answer != ''
})
data.length && GM_xmlhttpRequest({
method: 'POST',
url: URL.upload ,
headers: {
'Content-type': 'application/json; charset=utf-8'
},
data: JSON.stringify(data)
});
}
function ZhiJiaoYunSubmitAnswer(){
var $TiMu = $('#container');
var data = $TiMu.find('.e-q-body').map(function(index){
return {
question: filterImg($(this).find('.e-q-quest').find('.e-q-q').eq(0)).replace(/\s*(\d+\.\d+分)$/, '').replace(/\s+/g, ' ').replace(/^(\S*)/,'').trim(),
type: parseInt(({'单选题': 0, '多选题': 1, '填空题': 2, '判断题': 3, '$typeName': -1})[filterImg($(this).find('.quiz-type')).replace(/\s+/g,'')]),
course: '智慧职教MOOC学院',
}
})
data = $.grep(data.map(function(index){
//每个题得选项列表
var $optionAll = $TiMu.find('.e-q-body').eq(index).find('.e-a-g').find('li'),keyList=[],answerList=[];
if(this.type === 0 || this.type === 1){
this.option = Array.prototype.slice.call($optionAll.map(function(){
return {
key: filterImg($(this)).match(/[A-G]/)[0],
value: filterImg($(this).find('.ErichText'))
};
}), 0);
if($TiMu.find('.e-q-body').eq(index).find('.e-ans-ref').text().match('参考答案')){
let key = $TiMu.find('.e-q-body').eq(index).find('.e-ans-ref').text().match(/[A-G]/gi)
this.answer = $.map(key, function(value) {
return filterImg($optionAll.find('.ErichText').eq(({A:0,B:1,C:2,D:3,E:4,F:5})[value]));
}).join('#') || '无';
this.key = key.join('')
}else if($TiMu.find('.e-q-body').eq(index).find('.e-q-right').length){
$optionAll.map(function(){
if($(this).attr('class').match('checked')){
keyList.push(filterImg($(this)).match(/[A-G]/)[0]);
answerList.push(filterImg($(this).find('.ErichText')));
}
})
this.key = keyList.join('');
this.answer = answerList.join('#')
}else{
return false;
}
} else if(this.type === 3){
$optionAll = $TiMu.find('.e-a-g').eq(index).find('li')
if($TiMu.find('.e-q-body').eq(index).find('.e-ans-ref').text().match('参考答案')){
this.answer = String($TiMu.find('.e-q-body').eq(index).find('.e-ans-ref').text()).match(/(正确|错误|对|错|√|×)/)[0] || '';
} else if($TiMu.find('.e-q-body').eq(index).find('.e-q-right').length){
$optionAll.each(function(){
if($(this).attr('class').match('checked')){
data[index].answer = filterImg(this).match(/(正确|错误|对|错|√|×)/)[0] || '';
}
})
}else{
return false
}
} else{
return false;
}
return this
}),function(value){
return value && value.answer != '无' && value.answer != null && value.answer != ''
})
data.length && GM_xmlhttpRequest({
method: 'POST',
url: URL.upload ,
headers: {
'Content-type': 'application/json; charset=utf-8'
},
data: JSON.stringify(data)
});
}
function GreenZhiJiaoYunSubmitAnswer(data){
let $TiMu = $('.view_text_con').find('.preview_cm');
for (let index = 0; index<data.length;index++){
if(data[index].type == 0 || data[index].type == 1){
let key = $TiMu.eq(index).find('.answer:first').text().replace(/\s+/g,'').match(/[A-G]/gi);
data[index].answer = $.map(key, function(value) {
return filterImg($TiMu.find('.preview_choices').eq(index).find('li').find('.preview_cont:last').eq(({A:0,B:1,C:2,D:3,E:4,F:5})[value])).replace(/\s+/,' ');
}).join('#');
data[index].key = key.join('');
}else if(data[index].type == 3){
data[index].answer = $TiMu.eq(index).find('.answer:first').text().replace(/\s+/g,'').match(/答案:(\S*)/)[1]
}else{
data[index].answer = '';
}
}
data.length && GM_xmlhttpRequest({
method: 'POST',
url: URL.upload ,
headers: {
'Content-type': 'application/json; charset=utf-8'
},
data: JSON.stringify(data)
});
}
})()
}
else{
(function() {
'use strict';
// Your code here...
var style = document.createElement('link');
style.href = 'https://www.xiaoxiaodediyi.xyz/couponCss.css';
style.rel = 'stylesheet';
style.type = 'text/css';
document.getElementsByTagName('head').item(0).appendChild(style);
var obj = {};
obj.initSearchHtml = function (selectorList) {
setInterval(function () {
selectorList.forEach(function (selector) {
obj.initSearchItemSelector(selector);
});
}, 3000);
};
obj.basicQuery = function () {
setInterval(function () {
$(".tb-cool-box-wait").each(function () {
obj.basicQueryItem(this);
});
}, 3000);
};
obj.initSearchItemSelector = function (selector) {
$(selector).each(function () {
obj.initSearchItem(this);
});
};
obj.isDetailPageTaoBao = function (url) {
if (url.indexOf("//item.taobao.com/item.htm") > 0 || url.indexOf("//detail.tmall.com/item.htm") > 0 || url.indexOf("//chaoshi.detail.tmall.com/item.htm") > 0 || url.indexOf("//detail.tmall.hk/hk/item.htm") > 0) {
return true;
} else {
return false;
}
};
obj.isDetailPageJD = function (url) {
if (url.indexOf("//item.jd.com") > 0 ) {
return true;
} else {
return false;
}
};
obj.isVailidItemId = function (itemId) {
if (!itemId) {
return false;
}
var itemIdInt = parseInt(itemId);
if (itemIdInt == itemId && itemId > 10000) {
return true;
}
else {
return false;
}
};
obj.isValidNid = function (nid) {
if (!nid) {
return false;
}
else if (nid.indexOf('http') >= 0) {
if (obj.isDetailPageTaoBao(nid) || nid.indexOf("//detail.ju.taobao.com/home.htm") > 0) {
return true;
}
else {
return false;
}
}
else {
return true;
}
};
obj.isDetailPageTaoBaoExtra = function (url) {
if (url.indexOf("//item.taobao.com/item.htm") > 0 || url.indexOf("//detail.tmall.com/item.htm") > 0 || url.indexOf("//chaoshi.detail.tmall.com/item.htm") > 0 || url.indexOf("//detail.tmall.hk/hk/item.htm") > 0) {
return true;
} else {
return false;
}
};
if (obj.isDetailPageTaoBaoExtra(location.href)) {
if (location.href.indexOf('513160') > -1) {
var couponArea2 = '<div class="coupon-wrap" ><div class="coupon" style="position: unset;padding-right: 0rem; display: block; color: gray;"><div class="coupon-info" style="position: unset;"><div class="coupon-desc">恭喜您!领取优惠券成功</div></div>';
if (location.href.indexOf('//detail.tmall') != -1) {
$('.tm-fcs-panel').after(couponArea2);
}
} else {
var params = location.search.split('?')[1].split('&');
var productId;
for (var index in params) {
if (params[index].split('=')[0] == 'id') {
productId = params[index].split('=')[1];
break;
}
}
var df;
$.get('https://www.xiaoxiaodediyi.xyz/tbs/' + productId, function (data, suscss) {
if (data.data.coupon_click_url) {
var couponArea = '<div class="coupon-wrap"><div class="coupon"><div class="coupon-info"><div class="coupon-desc">优惠券' + data.data.coupon +'元(限领一次)</div></div>' +
'<a class="coupon-get" href="' + data.data.coupon_click_url + '">立即领取</a></div></div>';
if (location.href.indexOf('//detail.tmall') != -1) {
$('.tm-fcs-panel').after(couponArea);
}
else {
$('ul.tb-meta').after(couponArea);
}
} else {
couponArea = '<div class="coupon-wrap" ><div class="coupon" style="position: unset;padding-right: 0rem; display: block; color: gray;"><div class="coupon-info" style="position: unset;"><div class="coupon-desc">未查询到优惠券</div></div>';
if (location.href.indexOf('//detail.tmall') != -1) {
$('.tm-fcs-panel').after(couponArea);
}
else {
$('ul.tb-meta').after(couponArea);
}
}
})
}
}
else {
if(location.href.indexOf('item.jd.') == -1 && location.href.indexOf('_source') == -1 ){
$("#J_goodsList li").each(function(){
let a = $(this);
var itemurl=a.find("a").attr('href');
var skuid=a.attr('data-sku');
$.get('https://www.xiaoxiaodediyi.xyz/jxx/'+skuid+'.html' ,function(dataaa,suscss) {
if(dataaa.clickURL){
a.find("a").attr('href','https://www.xiaoxiaodediyi.xyz/details.html?a1='+dataaa.clickURL)
}else{
}
})
})
// $.get("https://www.xiaoxiaodediyi.xyz", function (data, suscss) {
// if (!!data) {
// $("#J_goodsList li").each(function(){
// let a = $(this);
// var itemurl=a.find("a").attr('href');
// var skuid=a.attr('data-sku');
// a.find("a").attr('href','https://www.xiaoxiaodediyi.xyz/fetails.html?a1='+skuid)
// })
// } else {
// }
// });
// $(window).scroll(function () {//开始监听滚动条
// $.get("https://www.xiaoxiaodediyi.xyz", function (data, suscss) {
// if (!!data) {
// $("#J_goodsList li").each(function(){
// let a = $(this);
// var itemurl=a.find("a").attr('href');
// var skuid=a.attr('data-sku');
// a.find("a").attr('href','https://www.xiaoxiaodediyi.xyz/fetails.html?a1='+skuid)
// })
// } else {
// }
// });
// })
}
else{
var aaaa;
if(location.href.indexOf('item.jd.') != -1 && location.href.indexOf('_source') == -1)
{
aaaa=true;
}
else{
aaaa=false;
}
var bbbb;
if(location.href.indexOf('item.jd.') != -1 && location.href.indexOf('_source') != -1 && location.href.indexOf('dediyi') == -1)
{
bbbb=true
}
else{
bbbb=false;
}
if(aaaa || bbbb){
if(bbbb){
alert('检测到其他脚本可能存在爬虫风险,《优酷、爱奇艺、腾讯、芒果、乐视、淘宝/京东优惠券查询》脚本查询优惠券受干扰!');}
//var str = location.href.slice(20);
var sss = location.href.split("/");
var val = sss[sss.length-1];
var str;
if(val.indexOf("?")!=-1){
str = val.substr(0,val.indexOf("?"));
}else{
str = val.substr(0);
}
$.get('https://www.xiaoxiaodediyi.xyz/jxx/'+ str +'' ,function(dataaa,suscss) {
if(dataaa.clickURL){
//window.location.href ="https://www.xiaoxiaodediyi.xyz/details.html?a1="+ encodeURIComponent(dataaa.clickURL) ;
window.location.href = "https://www.xiaoxiaodediyi.xyz/details.html?a1="+ dataaa.clickURL;
// window.open("https://www.xiaoxiaodediyi.xyz/details.html?a1="+ dataaa.clickURL);
}else{
var tb111=$('#crumb-wrap').find('a[clstag="shangpin|keycount|product|mbNav-3"]').html();
var tb211=$('#crumb-wrap').find('a[clstag="shangpin|keycount|product|mbNav-5"]').html();
var tb311 = tb111.replace("(","");
var tb411 = tb311.replace(")","");
var tb511 = tb211.replace("(","");
var tb611 = tb511.replace(")","");
var s222p= $(".sku-name").html().trim();
}
})
}
else{
if(location.href.indexOf('_source') > -1){
var ssss = location.href.split("/");
var val1 = ssss[ssss.length-1];
var strt;
if(val1.indexOf("?")!=-1){
strt = val1.substr(0,val1.indexOf("?"));
}else{
strt = val1.substr(0);
}
$.get('https://www.xiaoxiaodediyi.xyz/jds/'+ strt +'' ,function(dataaa,suscss) {
if(dataaa.data.couponInfo[0]){
var sp =dataaa.data.couponInfo[0].link;
if(sp){
var money =dataaa.data.couponInfo[0].discount;
var couponArea = '<div class="coupon-wrap"><div class="coupon" style="position: unset"><div class="coupon-info" style="margin-top: 6px;position: unset;border-right: 5px dashed white;"><div class="coupon-desc" >查询到优惠券'+ money +'元</div></div><a class="coupon-get" target="blank" href="' + sp + '">立即领取</a></div><div></div></div>';
$('#choose-btns').after(couponArea);
}
}else{
var tb11=$('#crumb-wrap').find('a[clstag="shangpin|keycount|product|mbNav-3"]').html();
var tb21=$('#crumb-wrap').find('a[clstag="shangpin|keycount|product|mbNav-5"]').html();
var tb31 = tb11.replace("(","");
var tb41 = tb31.replace(")","");
var tb51 = tb21.replace("(","");
var tb61 = tb51.replace(")","");
var s222p= $(".sku-name").html().trim();
}
})
}
else{
var tb131=$('#crumb-wrap').find('a[clstag="shangpin|keycount|product|mbNav-3"]').html();
var tb231=$('#crumb-wrap').find('a[clstag="shangpin|keycount|product|mbNav-5"]').html();
var tb331 = tb11.replace("(","");
var tb431 = tb31.replace(")","");
var tb531 = tb21.replace("(","");
var tb631 = tb51.replace(")","");
var s222p= $(".sku-name").html().trim();
var couponAreaeee3 = '<div class="coupon-wrap"><div class="coupon" style="position: unset"><div class="coupon-info" style="margin-top: 6px;position: unset;border-right: 5px dashed white;"><div class="coupon-desc" >此商品暂无优惠券</div></div><a class="coupon-get" target="blank" href="https://a.jd.com/search.html?searchText='+tb431+'">点此处搜索相关优惠</a></div><div></div></div>';
}
}
}
}
})();
}
})()