// ==UserScript==
// @name 可信考试名额监控
// @namespace http://tampermonkey.net/
// @version 1.2.1
// @description 监控可信考试报考名额,在有报名名额时发送系统提醒
// @require https://cdn.bootcdn.net/ajax/libs/jquery/3.2.1/jquery.min.js
// @author zxpluto
// @match *://ilearning.huawei.com/iexam/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=huawei.com
// @grant GM_addStyle
// @grant GM_notification
// @connect */ilearning.huawei.com
// @license MIT
// @downloadURL https://update.greasyfork.icu/scripts/471979/%E5%8F%AF%E4%BF%A1%E8%80%83%E8%AF%95%E5%90%8D%E9%A2%9D%E7%9B%91%E6%8E%A7.user.js
// @updateURL https://update.greasyfork.icu/scripts/471979/%E5%8F%AF%E4%BF%A1%E8%80%83%E8%AF%95%E5%90%8D%E9%A2%9D%E7%9B%91%E6%8E%A7.meta.js
// ==/UserScript==
GM_addStyle('#startBtn{color:#ffffff;position:absolute;width:42px;top:6px;right:12px;z-index:2999;padding:2px6px;cursor:pointer;} #interDiv{ color:deepskyblue; position:absolute; border-left:1pxsoliddeepskyblue; padding-left:8px; vertical-align:middle; top:6px; right:60px; z-index:999; } #checkInterval{ color:#000000; width:30px; } #msgBoard{ color:#ffffff; position:fixed; width:300px; height:300px; bottom:6px; right:2px; z-index:2999; background-color:deepskyblue; padding:2px2px; opacity:0.8; display:none; } #msgBox{ width:296px; height:278px; background-color:#ffffff; padding:4px6px; overflow-y:scroll; } .highlight-msg{ color:firebrick; } .normal-msg{ color:#000000; } .start-btn{ background-color:deepskyblue; } .stop-btn{ background-color:firebrick; }');
(function() {
console.log('ilearningReservation started');
$("body").append(`
间隔>秒
Start
`);
var logBoard = ``
$("body").append(logBoard);
//var url = $(window).attr("location").href;
var url = location.href;
console.log(url);
// 从URL中解析参数
var arr_url = url.split('?');
var arr_params = arr_url[1].split('&');
var urlParams = {}
for (var i=0; i= 0) {
ilearningVersion = 2
checkReservationUrl = 'https://ilearning.huawei.com/sxz/api/iexam/api/iexam/userexam/v1/exams/checkReservation';
if (url.indexOf('examId=') >= 0) {
var returnedFieldId = urlParams.examId;
console.log('returnedFieldId',returnedFieldId);
var timer1 = setInterval(function () {
if ($(".examInfoSelect .filter-btn").length > 0) {
clearInterval(timer1);
$(".examInfoSelect .filter-btn").click();
var timer2 = setInterval(function () {
if ($(".ant-modal-wrap.ka-a-confirm .ant-modal-body .ka-a-confirm-body .recordTable .ant-radio-input[value='"+ returnedFieldId + "']").length > 0) {
clearInterval(timer2);
$(".ant-modal-wrap.ka-a-confirm .ant-modal-body .ka-a-confirm-body .recordTable .ant-radio-input[value='"+ returnedFieldId + "']").click();
$(".ant-modal-wrap.ka-a-confirm .ant-modal-content .ant-modal-footer .ant-btn-primary").click();
}
},100)
}
},100);
}
}
var checkRemainingQuota = function(){
$.ajax({
async:false,
type:"POST",
url: checkReservationUrl,
data: JSON.stringify(checkReservationData),
contentType: "application/json;charset=utf8",
success: function(result,status,xhr){
//console.log(status);
if (status=='success'){
var data = result.data;
// console.log(data);
var remainingQuota = data.remainingQuota;
var now = new Date();
var yea = now.getFullYear();
var mon = now.getMonth()+1;
var dat = now.getDate();
var hou = now.getHours();
var min = now.getMinutes();
var sec = now.getSeconds();
var dateStr = yea + '-' + (mon<10?'0'+mon:mon) +'-'+ (dat<10?'0'+dat:dat) +' '+ (hou<10?'0'+hou:hou) + ':' + (min<10?'0'+min:min) + ':' + (sec<10?'0'+sec:sec);
// remainingQuota = 2; //for test
var msg = "";
var msgClass = ""
if (remainingQuota > 0){
var title = '';
var examinationId = '';
var fieldId;
if (ilearningVersion == 1){
title = $("[ng-bind-html='data.examination.examinationName']").text();
examinationId = checkReservationData.examinationId;
fieldId = checkReservationData.field;
}
if (ilearningVersion == 2){
title = $(".exam-name.ellipsis-text>span").text();
examinationId = checkReservationData.examId;
fieldId = checkReservationData.id;
}
msg = '['+ dateStr +'] 发现 ' + remainingQuota + ' 个名额!';
msgClass = "highlight-msg";
console.log(checkReservationData)
//发送通知消息
GM_notification({
"title": title,
"text": '发现 ' + remainingQuota + ' 个名额!',
"timeout": 10000,
highlight: true, //布尔值,是否突出显示发送通知的选项卡
silent: false, //布尔值,是否播放声音
});
}
else{
msg = '['+ dateStr +'] 没有发现名额。';
msgClass = "normal-msg";
}
$("#msgBox").prepend(``+msg+`
`);
console.log(msg);
}
}
});
}
$("#startBtn").click(function(){
if (!checkingFlag){
console.log('************** Checking started! **************');
//校验输入的间隔时间
var checkInterval = $("#checkInterval").val();
console.log(checkInterval)
if (checkInterval == null || checkInterval ==''){
alert("时间间隔不能为空!");
return;
}
else if (!(/(^[1-9]\d*$)/.test(checkInterval))){
alert("时间间隔不是正整数!");
return;
}
else if (parseInt(checkInterval) < 10){
alert("时间间隔不能小于10秒!");
return;
}
if (ilearningVersion == 2){
// 新版ilearning, 从URL参数中获取examin Id,从场次列表中获取选中的field Id
var fieldId = $(".session-select-overlay .selectTable .ant-table-body .ant-table-tbody>tr.selected-row").attr("data-row-key");
if (!fieldId){
fieldId = $(".ant-modal-wrap.ka-a-confirm .ant-modal-body .ka-a-confirm-body .recordTable .ant-table-tbody>tr.ant-table-row-selected").attr("data-row-key");
if (!fieldId){
alert("请选择场次!");
return;
}
}
checkReservationData = {
"examId": urlParams.examId,
// "id": parseInt(fieldId)
"id": fieldId
};
}
console.log('checkReservationData', checkReservationData);
checkingFlag = 1;
$("#startBtn").text("Stop").removeClass("start-btn").addClass("stop-btn");
$("#msgBoard").show();
checkRemainingQuota();
//定时轮询
var timer3= setInterval(checkRemainingQuota, parseInt(checkInterval)*1000);
timers.push(timer3);
}
else{
if (timers.length >= 1){
for (var i=0;i