Skip to content

Commit

Permalink
增加倒序答题配置
Browse files Browse the repository at this point in the history
  • Loading branch information
kirakira2021 authored Dec 21, 2021
1 parent 7b29a74 commit e0f1327
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 36 deletions.
5 changes: 4 additions & 1 deletion techxuexi-js/version_info.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"techxuexi_js_version": "v20211015",
"techxuexi_js_version": "v20211221",
"notice": "...",
"techxuexi_js_update_log": [{
"version": "v20211015",
Expand All @@ -10,5 +10,8 @@
},{
"version": "v20211216",
"info": "修复?"
},{
"version": "v20211221",
"info": "增加倒序答题配置"
}]
}
118 changes: 83 additions & 35 deletions 不学习何以强国.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// ==UserScript==
// @name 不学习何以强国-beta
// @namespace http://tampermonkey.net/
// @version 20211216
// @version 20211221
// @description 问题反馈位置: https://github.com/TechXueXi/techxuexi-js/issues 。读文章,看视频,做习题。
// @author techxuexi ,荷包蛋。
// @match https://www.xuexi.cn
Expand Down Expand Up @@ -61,10 +61,14 @@ var pause = false;//是否暂停答题
var examWeeklyPageNo = 1;
//每周答题总页码
var examWeeklyTotalPageCount = null;
//每周答题开启逆序答题: false: 顺序答题; true: 逆序答题
var examWeeklyReverse = false;
//专项答题当前页码
var examPaperPageNo = 1;
//专项答题总页码
var examPaperTotalPageCount = null;
//专项答题开启逆序答题: false: 顺序答题; true: 逆序答题
var examPaperReverse = false;
//每周答题,专项答题 请求rate 限制 每 3000ms 一次
const ratelimitms = 3000;
$(document).ready(function () {
Expand Down Expand Up @@ -145,8 +149,8 @@ $(document).ready(function () {
} else {
}
});


//获取video标签
function getVideoTag() {
let iframe = document.getElementsByTagName("iframe")[0];
Expand All @@ -166,7 +170,7 @@ function getVideoTag() {
"pauseButton": pauseButton
}
}

//读新闻或者看视频
//type:0为新闻,1为视频
async function reading(type) {
Expand Down Expand Up @@ -353,12 +357,26 @@ function doExamPractice() {
}, 1000);
});
}
//获取专项答题列表
function getExamPaper() {

//初始化专项答题总页数属性
async function InitExamPaperAttr() {
var data = await getExamPaperByPageNo(1); // 默认从第一页获取全部页属性
if (data) {
// 初始化总页码
examPaperTotalPageCount = data.totalPageCount;
// 若专项答题逆序, 则从最后一页开始
if (examPaperReverse) {
examPaperPageNo = examPaperTotalPageCount;
}
}
}

//获取指定页数的专项答题列表
function getExamPaperByPageNo(examPaperPageNoParam) {
return new Promise(function (resolve) {
$.ajax({
type: "GET",
url: ExamPaperListUrl.replace("{pageNo}", examPaperPageNo),
url: ExamPaperListUrl.replace("{pageNo}", examPaperPageNoParam),
xhrFields: {
withCredentials: true //如果没有这个请求失败
},
Expand All @@ -375,21 +393,25 @@ function getExamPaper() {
});
})
}

//查询专项答题列表看看还有没有没做过的,有则返回id
async function findExamPaper() {
var continueFind = true;
var examPaperId = null;
console.log("正在寻找未完成的专项答题")
console.log("初始化专项答题属性");
await InitExamPaperAttr();
console.log("正在寻找未完成的专项答题");
while (continueFind) {
let startTime = Date.now();
await getExamPaper().then(async (data) => {

await getExamPaperByPageNo(examPaperPageNo).then(async (data) => {
if (data) {
if (examPaperTotalPageCount == null) {
//如果总页码没初始化,则初始化
examPaperTotalPageCount = data.totalPageCount;
}
let examPapers = data.list;//获取专项答题的列表
if (examPaperReverse) {
// 若开启逆序答题, 则反转专项答题列表
console.log("专项答题,开启逆序模式,从最早的题目开始答题");
examPapers.reverse();
}
for (let j = 0; j < examPapers.length; j++) {
//遍历查询有没有没做过的
if (examPapers[j].status != 2) {//status: 1为"开始答题" , 2为"重新答题"
Expand All @@ -401,17 +423,19 @@ async function findExamPaper() {
}
if (!continueFind) {
} else {
//增加页码
examPaperPageNo++;
if (examPaperTotalPageCount == null || examPaperPageNo > examPaperTotalPageCount) {
//增加页码 (若开启逆序翻页, 则减少页码)
examPaperPageNo += examPaperReverse ? -1 : 1;
if (examPaperTotalPageCount == null
|| examPaperPageNo > examPaperTotalPageCount
|| examPaperPageNo < 1) {
//已经找完所有页码,还是没找到,不再继续查找
continueFind = false;
}
}
} else {
continueFind = false;
}

//fix code = 429
let remainms = Date.now() - startTime;
if (remainms < ratelimitms) {
Expand Down Expand Up @@ -442,12 +466,26 @@ function doExamPaper() {
});
})
}
//获取每周答题列表
function getExamWeekly() {

//初始化每周答题总页数属性
async function InitExamWeeklyAttr() {
var data = await getExamWeeklyByPageNo(1); // 默认从第一页获取全部页属性
if (data) {
// 初始化总页码
examWeeklyTotalPageCount = data.totalPageCount;
// 若每周答题逆序, 则从最后一页开始
if (examWeeklyReverse) {
examWeeklyPageNo = examWeeklyTotalPageCount;
}
}
}

//获取指定页数的每周答题列表
function getExamWeeklyByPageNo(examWeeklyPageNoParam) {
return new Promise(function (resolve) {
$.ajax({
type: "GET",
url: ExamWeeklyListUrl.replace("{pageNo}", examWeeklyPageNo),
url: ExamWeeklyListUrl.replace("{pageNo}", examWeeklyPageNoParam),
xhrFields: {
withCredentials: true //如果没有这个请求失败
},
Expand All @@ -464,21 +502,29 @@ function getExamWeekly() {
});
})
}

//查询每周答题列表看看还有没有没做过的,有则返回id
async function findExamWeekly() {
var continueFind = true;
var examWeeklyId = null;
console.log("正在寻找未完成的每周答题")
console.log("初始化每周答题");
await InitExamWeeklyAttr();
console.log("正在寻找未完成的每周答题");
while (continueFind) {
let startTime = Date.now();
await getExamWeekly().then(async (data) => {
await getExamWeeklyByPageNo(examWeeklyPageNo).then(async (data) => {
if (data) {
if (examWeeklyTotalPageCount == null) {
//如果总页码没初始化,则初始化
examWeeklyTotalPageCount = data.totalPageCount;
if (examWeeklyReverse) {
// 若开启逆序答题, 则反转列表
console.log("每周答题,开启逆序模式,从最早的题目开始答题");
data.list.reverse();
}
for (let i = 0; i < data.list.length; i++) {
let examWeeks = data.list[i].practices;//获取每周的测试列表
if (examWeeklyReverse) {
// 若开启逆序, 则反转每周的测试列表
examWeeks.reverse();
}
for (let j = 0; j < examWeeks.length; j++) {
//遍历查询有没有没做过的
if (examWeeks[j].status != 2) {//status: 1为"开始答题" , 2为"重新答题"
Expand All @@ -496,16 +542,18 @@ async function findExamWeekly() {
if (!continueFind) {
} else {
//增加页码
examWeeklyPageNo++;
if (examWeeklyTotalPageCount == null || examWeeklyPageNo > examWeeklyTotalPageCount) {
examWeeklyPageNo += examWeeklyReverse ? -1 : 1;
if (examWeeklyTotalPageCount == null
|| examWeeklyPageNo > examWeeklyTotalPageCount
|| examWeeklyPageNo < 1) {
//已经找完所有页码,还是没找到,不再继续查找
continueFind = false;
}
}
} else {
continueFind = false;
}

//fix code = 429
let remainms = Date.now() - startTime;
if (remainms < ratelimitms) {
Expand Down Expand Up @@ -982,7 +1030,7 @@ async function start() {
taskProgress = await getToday();
if (taskProgress != null) {
console.log("开始学习")

//检查新闻
if (settings[0] && taskProgress[0].currentScore != taskProgress[0].dayMaxScore) {
tasks[0] = false;//只要还有要做的,就当做没完成
Expand All @@ -992,7 +1040,7 @@ async function start() {
} else {
tasks[0] = true;
}

//检查视频
let temp = parseInt(taskProgress[1].dayMaxScore - taskProgress[1].currentScore);
let temp2 = parseInt(taskProgress[3].dayMaxScore - taskProgress[3].currentScore);
Expand All @@ -1004,7 +1052,7 @@ async function start() {
} else {
tasks[1] = true;
}

//检查每日答题
if (settings[6] && taskProgress[6].currentScore != taskProgress[6].dayMaxScore) {
tasks[2] = false;//只要还有要做的,就当做没完成
Expand All @@ -1013,7 +1061,7 @@ async function start() {
} else {
tasks[2] = true;
}

//检查每周答题
if (settings[2] && taskProgress[2].currentScore == 0) {
tasks[3] = false;//只要还有要做的,就当做没完成
Expand All @@ -1026,7 +1074,7 @@ async function start() {
} else {
tasks[3] = true;
}

//检查专项练习
if (settings[5] && taskProgress[5].currentScore == 0) {
tasks[4] = false;//只要还有要做的,就当做没完成
Expand All @@ -1039,7 +1087,7 @@ async function start() {
} else {
tasks[4] = true;
}

if (tasks[0] && tasks[1] && tasks[2] && tasks[3] && tasks[4]) {
//如果检查都做完了,就不用继续了
continueToDo = false;
Expand Down

0 comments on commit e0f1327

Please sign in to comment.