在您安装前,Greasy Fork镜像 希望您知道此脚本包含可能不受欢迎的功能,也许会帮助脚本作者获利,而不能给你带来任何收益。
你只有在参与某些事后才能使用脚本的全部功能,如加入某群组、订阅某频道或在某页点赞等。
这个脚本会在你访问的网站插入广告。
一个中国大学mooc刷课工具,火狐,谷歌,油猴支持.支持自动观看视频/课件/讨论,屏蔽视频题目和静音倍速,作业/测试题库,考试题库,SCOP课程(੧ᐛ੭挂科模式,启动)
- // ==UserScript==
- // @name 中国大学慕课小工具
- // @namespace https://github.com/CodFrm/cxmooc-tools
- // @version 2.5.3
- // @description 一个中国大学mooc刷课工具,火狐,谷歌,油猴支持.支持自动观看视频/课件/讨论,屏蔽视频题目和静音倍速,作业/测试题库,考试题库,SCOP课程(੧ᐛ੭挂科模式,启动)
- // @author CodFrm
- // @run-at document-start
- // @match *://www.icourse163.org/learn/*
- // @match *://www.icourse163.org/spoc/learn/*
- // @grant GM_xmlhttpRequest
- // @grant GM_notification
- // @grant CAT_click
- // @grant unsafeWindow
- // @license MIT
- // @supportURL https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=63
- // @homepage https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=63
- // @antifeature membership
- // @antifeature ads
- // ==/UserScript==
- let config = {
- answer_ignore: false, //忽略题目,勾选此处将不会答题
- auto: true, //全自动挂机,无需手动操作,即可自动观看视频等
- rand_answer: false, //随机答案,没有答案的题目将自动的生成一个答案
- interval: 1, //时间间隔,当任务点完成后,会等待1分钟然后跳转到下一个任务点
- video_multiple: 1, //视频播放倍速,视频播放的倍数,建议不要改动,为1即可,这是危险的功能
- video_mute: true, //视频静音,视频自动静音播放
- topic_interval: 5,//题目答题间隔,单位为秒
- vtoken: "",
- };
- Object.keys(config).forEach(k => {
- localStorage[k] = config[k];
- });
- /******/ (function(modules) { // webpackBootstrap
- /******/ // The module cache
- /******/ var installedModules = {};
- /******/
- /******/ // The require function
- /******/ function __webpack_require__(moduleId) {
- /******/
- /******/ // Check if module is in cache
- /******/ if(installedModules[moduleId]) {
- /******/ return installedModules[moduleId].exports;
- /******/ }
- /******/ // Create a new module (and put it into the cache)
- /******/ var module = installedModules[moduleId] = {
- /******/ i: moduleId,
- /******/ l: false,
- /******/ exports: {}
- /******/ };
- /******/
- /******/ // Execute the module function
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/
- /******/ // Flag the module as loaded
- /******/ module.l = true;
- /******/
- /******/ // Return the exports of the module
- /******/ return module.exports;
- /******/ }
- /******/
- /******/
- /******/ // expose the modules object (__webpack_modules__)
- /******/ __webpack_require__.m = modules;
- /******/
- /******/ // expose the module cache
- /******/ __webpack_require__.c = installedModules;
- /******/
- /******/ // define getter function for harmony exports
- /******/ __webpack_require__.d = function(exports, name, getter) {
- /******/ if(!__webpack_require__.o(exports, name)) {
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
- /******/ }
- /******/ };
- /******/
- /******/ // define __esModule on exports
- /******/ __webpack_require__.r = function(exports) {
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
- /******/ }
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
- /******/ };
- /******/
- /******/ // create a fake namespace object
- /******/ // mode & 1: value is a module id, require it
- /******/ // mode & 2: merge all properties of value into the ns
- /******/ // mode & 4: return value when already ns object
- /******/ // mode & 8|1: behave like require
- /******/ __webpack_require__.t = function(value, mode) {
- /******/ if(mode & 1) value = __webpack_require__(value);
- /******/ if(mode & 8) return value;
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
- /******/ var ns = Object.create(null);
- /******/ __webpack_require__.r(ns);
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
- /******/ return ns;
- /******/ };
- /******/
- /******/ // getDefaultExport function for compatibility with non-harmony modules
- /******/ __webpack_require__.n = function(module) {
- /******/ var getter = module && module.__esModule ?
- /******/ function getDefault() { return module['default']; } :
- /******/ function getModuleExports() { return module; };
- /******/ __webpack_require__.d(getter, 'a', getter);
- /******/ return getter;
- /******/ };
- /******/
- /******/ // Object.prototype.hasOwnProperty.call
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
- /******/
- /******/ // __webpack_public_path__
- /******/ __webpack_require__.p = "";
- /******/
- /******/
- /******/ // Load entry module and return exports
- /******/ return __webpack_require__(__webpack_require__.s = "./src/tampermonkey/course163-pack.ts");
- /******/ })
- /************************************************************************/
- /******/ ({
- /***/ "./src/config.ts":
- /*!***********************!*\
- !*** ./src/config.ts ***!
- \***********************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.SystemConfig = void 0;
- var SystemConfig = /** @class */ (function () {
- function SystemConfig() {
- }
- SystemConfig.version = 2.5;
- SystemConfig.url = "https://cx.icodef.com/";
- SystemConfig.hotVersion = "2.5.0";
- //TODO:优化规则,可以通过ci自动生成匹配规则到tampermonkey和manifest文件中
- SystemConfig.match = {
- "cx": [
- "*://*/mycourse/studentstudy?*",
- "*://*/work/doHomeWorkNew?*",
- "*://*/work/selectWorkQuestionYiPiYue?*",
- "*://*/exam/test/reVersionTestStartNew?*",
- "*://*/ztnodedetailcontroller/visitnodedetail?*",
- "*://*/antispiderShowVerify.ac*",
- "*://*/html/processVerify.ac?*",
- "*://*/exam/test/reVersionPaperMarkContentNew?*",
- "*://*/ananas/modules/*/index.html?*",
- "*://*/exam/test?*",
- "*://*/course/*.html?*"
- ], "zhs": [
- "*://examh5.zhihuishu.com/stuExamWeb.html*",
- "*://onlineexamh5new.zhihuishu.com/stuExamWeb.html*",
- "*://studyh5.zhihuishu.com/videoStudy.html*",
- ], "mooc163": [
- "*://www.icourse163.org/learn/*",
- "*://www.icourse163.org/spoc/learn/*"
- ]
- };
- SystemConfig.config = {
- cx: {
- name: "超星",
- items: [{
- title: "随机答案",
- description: "如果题库没有正确的答案会随机选择",
- type: "checkbox",
- key: "rand_answer",
- value: false,
- }, {
- title: "自动挂机",
- description: "进入一个页面就会自动开始挂机,完成一个任务之后会自动进行下一个",
- type: "checkbox",
- key: "auto",
- value: true,
- }, {
- title: "视频静音",
- description: "播放视频时,自动开启静音",
- type: "checkbox",
- key: "video_mute",
- value: true,
- }, {
- title: "忽略题目",
- description: "自动挂机时,忽略掉题目不做,直接跳过",
- type: "checkbox",
- key: "answer_ignore",
- value: false,
- }, {
- title: "超级模式",
- description: "超星平台下,超级模式会自动将flash播放器换成h5播放器",
- type: "checkbox",
- key: "super_mode",
- value: true,
- }, {
- title: "播放源",
- description: "锁定视频播放源,为空为记录最后一次选中的源(公网1,公网2等)",
- type: "text",
- key: "video_cdn",
- value: "默认"
- }, {
- title: "播放倍速",
- description: "视频播放的倍数,1为正常速度(最高16倍,该功能有一定危险)",
- type: "text",
- key: "video_multiple",
- prompt: "这是一个很危险的功能,建议不要进行调整,如果你想调整播放速度请在下方填写yes(智慧树平台播放速度和视频进度无关,最高只能1.5倍速)",
- unit: "倍",
- value: "1",
- }, {
- title: "跳转间隔",
- description: "视频(题目,任务点)完成后n分钟再继续下一个任务,可以有小数点,例如:0.5=30秒",
- type: "text",
- key: "interval",
- unit: "分",
- value: "1",
- }, {
- title: "做题间隔",
- description: "每一道题之间填写答案的时间间隔",
- type: "text",
- key: "topic_interval",
- unit: "秒",
- value: "5",
- }],
- }, zhs: {
- name: "智慧树",
- items: [{
- title: "随机答案",
- description: "如果题库没有正确的答案会随机选择",
- type: "checkbox",
- key: "rand_answer",
- value: false,
- }, {
- title: "自动挂机",
- description: "进入一个页面就会自动开始挂机,完成一个任务之后会自动进行下一个",
- type: "checkbox",
- key: "auto",
- value: true,
- }, {
- title: "视频静音",
- description: "播放视频时,自动开启静音",
- type: "checkbox",
- key: "video_mute",
- value: true,
- }, {
- title: "超级模式",
- description: "智慧树平台下,超级模式会让任务完成的倍速成真",
- type: "checkbox",
- key: "super_mode",
- value: true,
- }, {
- title: "播放倍速",
- description: "视频播放的倍数,1为正常速度(最高16倍,该功能有一定危险)",
- type: "text",
- key: "video_multiple",
- prompt: "这是一个很危险的功能,建议不要进行调整,如果你想调整播放速度请在下方填写yes(智慧树平台播放速度和视频进度无关,最高只能1.5倍速)",
- unit: "倍",
- value: "1",
- }, {
- title: "跳转间隔",
- description: "视频完成后n分钟再继续播放下一个,可以有小数点,例如:0.5=30秒",
- type: "text",
- key: "interval",
- unit: "分",
- value: "1",
- }, {
- title: "做题间隔",
- description: "每一道题之间填写答案的时间间隔",
- type: "text",
- key: "topic_interval",
- unit: "秒",
- value: "5",
- }],
- }, mooc163: {
- name: "中国大学MOOC",
- items: [{
- title: "随机答案",
- description: "如果题库没有正确的答案会随机选择",
- type: "checkbox",
- key: "rand_answer",
- value: false,
- }, {
- title: "自动挂机",
- description: "进入一个页面就会自动开始挂机,完成一个任务之后会自动进行下一个",
- type: "checkbox",
- key: "auto",
- value: true,
- }, {
- title: "视频静音",
- description: "播放视频时,自动开启静音",
- type: "checkbox",
- key: "video_mute",
- value: true,
- }, {
- title: "忽略题目",
- description: "自动挂机时,忽略掉题目不做,直接跳过",
- type: "checkbox",
- key: "answer_ignore",
- value: false,
- }, {
- title: "播放倍速",
- description: "视频播放的倍数,1为正常速度(最高16倍,该功能有一定危险)",
- type: "text",
- key: "video_multiple",
- prompt: "这是一个很危险的功能,建议不要进行调整,如果你想调整播放速度请在下方填写yes(智慧树平台播放速度和视频进度无关,最高只能1.5倍速)",
- unit: "倍",
- value: "1",
- }, {
- title: "跳转间隔",
- description: "视频完成后n分钟再继续播放下一个,可以有小数点,例如:0.5=30秒",
- type: "text",
- key: "interval",
- unit: "分",
- value: "1",
- }, {
- title: "做题间隔",
- description: "每一道题之间填写答案的时间间隔",
- type: "text",
- key: "topic_interval",
- unit: "秒",
- value: "5",
- }],
- },
- };
- return SystemConfig;
- }());
- exports.SystemConfig = SystemConfig;
- /***/ }),
- /***/ "./src/internal/app/question.ts":
- /*!**************************************!*\
- !*** ./src/internal/app/question.ts ***!
- \**************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.ToolsQuestionBankFacade = exports.ToolsQuestionBank = exports.SwitchTopicType = exports.QuestionStatusString = exports.TopicStatusString = exports.PushAnswer = void 0;
- var utils_1 = __webpack_require__(/*! ../utils/utils */ "./src/internal/utils/utils.ts");
- var config_1 = __webpack_require__(/*! @App/config */ "./src/config.ts");
- var application_1 = __webpack_require__(/*! ../application */ "./src/internal/application.ts");
- var PushAnswer = /** @class */ (function () {
- function PushAnswer() {
- }
- PushAnswer.prototype.Equal = function (content1, content2) {
- return content1 == content2;
- };
- return PushAnswer;
- }());
- exports.PushAnswer = PushAnswer;
- var topicStatusMap = new Map();
- topicStatusMap.set("ok", "搜索成功").set("random", "随机答案").set("no_support_random", "不支持的随机答案类型").set("no_answer", "题库中没有搜索到答案").set("no_match", "题库中没有符合的答案");
- var questionStatusMap = new Map();
- questionStatusMap.set("success", "搜索成功").set("network", "题库网络错误").set("incomplete", "题库不全").set("processing", "搜索中...");
- function TopicStatusString(status) {
- return topicStatusMap.get(status) || "未知错误";
- }
- exports.TopicStatusString = TopicStatusString;
- function QuestionStatusString(status) {
- return questionStatusMap.get(status) || "未知错误";
- }
- exports.QuestionStatusString = QuestionStatusString;
- function SwitchTopicType(title) {
- switch (title) {
- case "单选题": {
- return 1;
- }
- case "多选题": {
- return 2;
- }
- case "判断题": {
- return 3;
- }
- case "填空题": {
- return 4;
- }
- default: {
- return null;
- }
- }
- }
- exports.SwitchTopicType = SwitchTopicType;
- // 小工具题库
- var ToolsQuestionBank = /** @class */ (function () {
- function ToolsQuestionBank(platform, info) {
- this.platform = platform;
- this.info = info;
- }
- ToolsQuestionBank.prototype.SetInfo = function (info) {
- this.info = info;
- };
- ToolsQuestionBank.prototype.GetInfo = function () {
- return encodeURIComponent(JSON.stringify(this.info));
- };
- ToolsQuestionBank.prototype.Answer = function (topic, resolve) {
- var _this = this;
- application_1.Application.App.log.Debug("答案查询", topic);
- var num = 20;
- var answer = new Array();
- var retStatus = "success";
- var next = function (index) {
- var body = "info=" + _this.GetInfo() + "&";
- var t = index;
- for (; t < index + num && t < topic.length; t++) {
- var val = topic[t];
- body += "topic[" + (t - index) + "]=" + encodeURIComponent((val.topic)) + "&type[" + (t - index) + "]=" + val.type + "&";
- }
- utils_1.HttpUtils.HttpPost(config_1.SystemConfig.url + "v2/answer?platform=" + _this.platform, body, {
- headers: {
- "Authorization": application_1.Application.App.config.vtoken,
- "X-Version": config_1.SystemConfig.version.toString(),
- },
- json: true,
- success: function (result) { return __awaiter(_this, void 0, void 0, function () {
- var status, tmpResult, i, val;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- status = "success";
- tmpResult = new Array();
- for (i = 0; i < result.length; i++) {
- if (result[i].result == undefined || result[i].result.length <= 0) {
- tmpResult.push({
- index: index + result[i].index,
- topic: result[i].topic,
- type: -1,
- status: "no_answer",
- answers: null,
- correct: null,
- Equal: this.Equal,
- });
- status = "incomplete";
- continue;
- }
- val = result[i].result[0];
- tmpResult.push({
- index: index + result[i].index,
- topic: val.topic,
- type: val.type,
- correct: val.correct,
- status: "ok",
- Equal: this.Equal,
- });
- }
- answer = answer.concat(tmpResult);
- if (status != "success") {
- retStatus = status;
- }
- return [4 /*yield*/, resolve({ status: "processing", answer: tmpResult })];
- case 1:
- _a.sent();
- if (t < topic.length) {
- next(t);
- }
- else {
- return [2 /*return*/, resolve({ status: retStatus, answer: answer })];
- }
- return [2 /*return*/];
- }
- });
- }); },
- error: function () {
- return resolve({ status: "network", answer: answer });
- }
- });
- };
- next(0);
- };
- ToolsQuestionBank.prototype.Push = function (answer) {
- var _this = this;
- return new Promise(function (resolve) {
- application_1.Application.App.log.Debug("采集提交", answer);
- utils_1.HttpUtils.HttpPost(config_1.SystemConfig.url + "answer?platform=" + _this.platform, "info=" + _this.GetInfo() + "&data=" + encodeURIComponent(JSON.stringify(answer)), {
- headers: {
- "Authorization": application_1.Application.App.config.vtoken,
- "X-Version": config_1.SystemConfig.version.toString(),
- },
- json: true,
- success: function (result) {
- application_1.Application.App.log.Info("答案自动记录成功,成功获得" + result.add_token_num + "个打码数,剩余数量:" + result.token_num);
- resolve("success");
- },
- error: function () {
- resolve("network");
- }
- });
- });
- };
- ToolsQuestionBank.prototype.Equal = function (content1, content2) {
- return utils_1.removeHTML(content1) == utils_1.removeHTML(content2);
- };
- ToolsQuestionBank.prototype.CheckCourse = function (info) {
- var _this = this;
- return new Promise(function (resolve) {
- info = info || [_this.info];
- utils_1.HttpUtils.HttpPost(config_1.SystemConfig.url + "v2/check?platform=" + _this.platform, "info=" + encodeURIComponent(JSON.stringify(info)), {
- headers: {
- "Authorization": application_1.Application.App.config.vtoken,
- "X-Version": config_1.SystemConfig.version.toString(),
- },
- success: function () {
- resolve(0);
- }, error: function () {
- resolve(-1);
- }
- });
- resolve();
- });
- };
- return ToolsQuestionBank;
- }());
- exports.ToolsQuestionBank = ToolsQuestionBank;
- var ToolsQuestionBankFacade = /** @class */ (function () {
- function ToolsQuestionBankFacade(platform, info) {
- if (typeof platform == "string") {
- this.bank = new ToolsQuestionBank(platform, info);
- }
- else {
- this.bank = platform;
- }
- this.question = new Array();
- }
- ToolsQuestionBankFacade.prototype.ClearQuestion = function () {
- this.question = new Array();
- };
- ToolsQuestionBankFacade.prototype.AddQuestion = function (q) {
- this.question.push(q);
- };
- ToolsQuestionBankFacade.prototype.Answer = function (callback) {
- var _this = this;
- var topic = new Array();
- this.question.forEach(function (val) {
- var type = val.GetType();
- if (type == -1) {
- return;
- }
- topic.push({
- topic: (val.GetTopic()),
- type: type,
- });
- });
- var status = "success";
- this.bank.Answer(topic, function (ret) {
- return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
- var t, i, answer, question, tmpStatus;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (ret.status != "processing") {
- application_1.Application.App.log.Debug("题库返回", ret);
- if (ret.status != "success" || status == "success") {
- callback(ret.status);
- return [2 /*return*/, resolve()];
- }
- callback(status);
- return [2 /*return*/, resolve()];
- }
- t = application_1.Application.App.config.topic_interval * 1000;
- i = 0;
- _a.label = 1;
- case 1:
- if (!(i < ret.answer.length)) return [3 /*break*/, 11];
- answer = ret.answer[i];
- question = this.question[answer.index];
- tmpStatus = answer.status;
- if (!(answer.status == "no_answer")) return [3 /*break*/, 3];
- status = this.randAnswer(status, tmpStatus, question);
- return [4 /*yield*/, utils_1.Sleep(t)];
- case 2:
- _a.sent();
- return [3 /*break*/, 10];
- case 3:
- if (!(answer.type != question.GetType())) return [3 /*break*/, 4];
- tmpStatus = "no_match";
- return [3 /*break*/, 6];
- case 4: return [4 /*yield*/, question.Fill(answer)];
- case 5:
- tmpStatus = _a.sent();
- _a.label = 6;
- case 6:
- if (!(tmpStatus == "no_match")) return [3 /*break*/, 8];
- status = this.randAnswer(status, tmpStatus, question);
- return [4 /*yield*/, utils_1.Sleep(t)];
- case 7:
- _a.sent();
- return [3 /*break*/, 10];
- case 8:
- question.SetStatus(tmpStatus);
- if (!(i < ret.answer.length - 1)) return [3 /*break*/, 10];
- return [4 /*yield*/, utils_1.Sleep(t)];
- case 9:
- _a.sent();
- _a.label = 10;
- case 10:
- i++;
- return [3 /*break*/, 1];
- case 11: return [2 /*return*/, resolve()];
- }
- });
- }); });
- });
- };
- ToolsQuestionBankFacade.prototype.randAnswer = function (status, tmpStatus, question) {
- if (application_1.Application.App.config.rand_answer) {
- tmpStatus = question.Random();
- }
- else {
- status = "incomplete";
- }
- if (tmpStatus == "no_support_random") {
- status = "incomplete";
- }
- question.SetStatus(tmpStatus);
- return status;
- };
- ToolsQuestionBankFacade.prototype.Push = function (callback) {
- var answer = new Array();
- this.question.forEach(function (val) {
- var correct = val.Correct();
- if (correct == null || correct.correct == null || correct.type == -1) {
- return;
- }
- answer.push(correct);
- });
- this.bank.Push(answer).then(function (ret) {
- application_1.Application.App.log.Debug("题库返回", ret);
- return callback(ret);
- });
- };
- ToolsQuestionBankFacade.prototype.dealOption = function (options) {
- for (var i = 0; i < options.length; i++) {
- if (typeof options[i].content == "string") {
- options[i].content = (options[i].content);
- }
- }
- return options;
- };
- ToolsQuestionBankFacade.prototype.CheckCourse = function () {
- return this.bank.CheckCourse();
- };
- return ToolsQuestionBankFacade;
- }());
- exports.ToolsQuestionBankFacade = ToolsQuestionBankFacade;
- /***/ }),
- /***/ "./src/internal/app/task.ts":
- /*!**********************************!*\
- !*** ./src/internal/app/task.ts ***!
- \**********************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.Task = void 0;
- var event_1 = __webpack_require__(/*! @App/internal/utils/event */ "./src/internal/utils/event.ts");
- var Task = /** @class */ (function (_super) {
- __extends(Task, _super);
- function Task() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- // 初始化任务
- Task.prototype.Init = function () {
- return new Promise(function (resolve) {
- return resolve();
- });
- };
- // 提交任务,例如topic的类型,可以在本接口内进行提交操作
- Task.prototype.Submit = function () {
- return new Promise(function (resolve) {
- return resolve();
- });
- };
- // 停止任务
- Task.prototype.Stop = function () {
- return new Promise(function (resolve) {
- return resolve();
- });
- };
- // 任务的上下文(对于某些iframe的可能会用到)
- Task.prototype.Context = function () {
- return window;
- };
- return Task;
- }(event_1.EventListener));
- exports.Task = Task;
- /***/ }),
- /***/ "./src/internal/app/topic.ts":
- /*!***********************************!*\
- !*** ./src/internal/app/topic.ts ***!
- \***********************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.Topic = void 0;
- var application_1 = __webpack_require__(/*! ../application */ "./src/internal/application.ts");
- var config_1 = __webpack_require__(/*! @App/config */ "./src/config.ts");
- // 题目任务点
- var Topic = /** @class */ (function () {
- function Topic(content, answer) {
- this.answer = answer;
- this.context = content;
- }
- Topic.prototype.SetQueryQuestions = function (queryQuestions) {
- this.queryQuestions = queryQuestions;
- };
- Topic.prototype.addQuestion = function () {
- var _this = this;
- var questions = this.queryQuestions.QueryQuestions();
- this.answer.ClearQuestion();
- questions.forEach(function (val) {
- _this.answer.AddQuestion(val);
- });
- };
- Topic.prototype.QueryAnswer = function () {
- var _this = this;
- return new Promise(function (resolve) {
- if (_this.lock) {
- return resolve("processing");
- }
- _this.lock = true;
- application_1.Application.App.log.Info("题目搜索中...");
- _this.addQuestion();
- _this.answer.Answer(function (status) {
- _this.lock = false;
- resolve(status);
- if (status == "network") {
- return application_1.Application.App.log.Error("题库无法访问,请查看:" + config_1.SystemConfig.url);
- }
- else if (status == "incomplete") {
- return application_1.Application.App.log.Warn("题库答案不全,请手动填写操作");
- }
- });
- });
- };
- Topic.prototype.CollectAnswer = function () {
- var _this = this;
- return new Promise(function (resolve) {
- application_1.Application.App.log.Debug("收集题目答案", _this.context);
- _this.addQuestion();
- _this.answer.Push(function (status) {
- application_1.Application.App.log.Debug("采集答案返回", status);
- resolve();
- });
- });
- };
- return Topic;
- }());
- exports.Topic = Topic;
- /***/ }),
- /***/ "./src/internal/application.ts":
- /*!*************************************!*\
- !*** ./src/internal/application.ts ***!
- \*************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.Application = exports.AppName = exports.Content = exports.Frontend = exports.Backend = void 0;
- var message_1 = __webpack_require__(/*! ./utils/message */ "./src/internal/utils/message.ts");
- var utils_1 = __webpack_require__(/*! ./utils/utils */ "./src/internal/utils/utils.ts");
- var config_1 = __webpack_require__(/*! @App/config */ "./src/config.ts");
- exports.Backend = "backend";
- exports.Frontend = "frontend";
- exports.Content = "content";
- exports.AppName = "cxmooc-tools";
- var Application = /** @class */ (function () {
- function Application(runEnv, launcher, component) {
- Application.app = this;
- Application.runEnv = runEnv;
- this.runEnvSwitch(runEnv);
- this.launcher = launcher;
- this.component = component;
- }
- Object.defineProperty(Application, "App", {
- get: function () {
- return Application.app;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(Application.prototype, "debug", {
- get: function () {
- return "development" == "development";
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(Application.prototype, "prod", {
- get: function () {
- return "development" == "production";
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(Application.prototype, "config", {
- get: function () {
- return this.component.get("config");
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(Application.prototype, "log", {
- get: function () {
- return this.component.get("logger");
- },
- enumerable: false,
- configurable: true
- });
- Application.prototype.run = function () {
- this.launcher.start();
- };
- Object.defineProperty(Application.prototype, "IsFrontend", {
- get: function () {
- return Application.IsFrontend;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(Application.prototype, "IsBackend", {
- get: function () {
- return Application.IsBackend;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(Application.prototype, "IsContent", {
- get: function () {
- return Application.IsContent;
- },
- enumerable: false,
- configurable: true
- });
- Application.prototype.runEnvSwitch = function (env) {
- switch (env) {
- case exports.Frontend:
- Application.IsFrontend = true;
- break;
- case exports.Backend:
- Application.IsBackend = true;
- break;
- case exports.Content:
- Application.IsContent = true;
- break;
- }
- ;
- };
- Object.defineProperty(Application.prototype, "Client", {
- get: function () {
- if (Application.IsFrontend) {
- return message_1.NewChromeClientMessage(exports.AppName);
- }
- return message_1.NewExtensionClientMessage(exports.AppName);
- },
- enumerable: false,
- configurable: true
- });
- Application.CheckUpdate = function (callback) {
- if (Application.IsContent) {
- chrome.storage.local.get(["version", "enforce", "hotversion", "url"], function (item) {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4 /*yield*/, callback((config_1.SystemConfig.version < item.version), item)];
- case 1:
- _a.sent();
- return [2 /*return*/];
- }
- });
- });
- });
- return;
- }
- utils_1.HttpUtils.HttpGet(config_1.SystemConfig.url + "update?ver=" + config_1.SystemConfig.version, {
- json: true,
- success: function (json) {
- return __awaiter(this, void 0, void 0, function () {
- var data;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- data = {
- version: json.version,
- url: json.url,
- enforce: json.enforce,
- hotversion: json.hotversion,
- injection: json.injection,
- };
- chrome.storage && chrome.storage.local.set(data);
- return [4 /*yield*/, callback((config_1.SystemConfig.version < data.version), data)];
- case 1:
- _a.sent();
- return [2 /*return*/];
- }
- });
- });
- }, error: function () {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4 /*yield*/, callback(false, undefined)];
- case 1:
- _a.sent();
- return [2 /*return*/];
- }
- });
- });
- }
- });
- };
- return Application;
- }());
- exports.Application = Application;
- /***/ }),
- /***/ "./src/internal/utils/config.ts":
- /*!**************************************!*\
- !*** ./src/internal/utils/config.ts ***!
- \**************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.NewFrontendGetConfig = exports.NewBackendConfig = exports.ChromeConfigItems = void 0;
- var utils_1 = __webpack_require__(/*! ./utils */ "./src/internal/utils/utils.ts");
- var application_1 = __webpack_require__(/*! ../application */ "./src/internal/application.ts");
- var config_1 = __webpack_require__(/*! @App/config */ "./src/config.ts");
- // 缓存默认值
- var configDefaultValue = new Map();
- configDefaultValue.set("vtoken", "");
- for (var key in config_1.SystemConfig.config) {
- for (var i = 0; i < config_1.SystemConfig.config[key].items.length; i++) {
- configDefaultValue.set(key + "_" + config_1.SystemConfig.config[key].items[i].key, config_1.SystemConfig.config[key].items[i].value);
- }
- }
- var ChromeConfigItems = /** @class */ (function () {
- function ChromeConfigItems(config) {
- var _this = this;
- this.Namespace = "";
- this.config = config;
- var list = [];
- configDefaultValue.forEach(function (val, key) {
- list.push(key);
- });
- this.config.Watch(list, function (key, val) {
- _this.localCache[key] = val;
- });
- this.localCache = localStorage;
- }
- // 设置配置的命名空间,储存格式为 namepace_configkey
- ChromeConfigItems.prototype.SetNamespace = function (namespace) {
- this.Namespace = namespace + "_";
- };
- ChromeConfigItems.prototype.ConfigList = function () {
- return this.config.ConfigList();
- };
- ChromeConfigItems.prototype.SetNamespaceConfig = function (namespace, key, val) {
- return this.config.SetConfig(namespace + "_" + key, val);
- };
- ChromeConfigItems.prototype.GetNamespaceConfig = function (namespace, key, defaultVal) {
- return this.config.GetConfig(namespace + "_" + key, defaultVal);
- };
- ChromeConfigItems.prototype.GetConfig = function (key, defaultVal) {
- var val = this.config.GetConfig(this.Namespace + key);
- if (val == undefined) {
- return this.config.GetConfig(key, defaultVal);
- }
- return val || defaultVal;
- };
- ChromeConfigItems.prototype.Watch = function (key, callback) {
- this.config.Watch(key, callback);
- };
- Object.defineProperty(ChromeConfigItems.prototype, "super_mode", {
- get: function () {
- return utils_1.toBool(this.GetConfig("super_mode", "true"));
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(ChromeConfigItems.prototype, "vtoken", {
- get: function () {
- return this.GetConfig("vtoken", "");
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(ChromeConfigItems.prototype, "rand_answer", {
- get: function () {
- return utils_1.toBool(this.GetConfig("rand_answer", "false"));
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(ChromeConfigItems.prototype, "auto", {
- get: function () {
- return utils_1.toBool(this.GetConfig("auto", "true"));
- },
- set: function (val) {
- this.SetConfig("auto", utils_1.boolToString(val));
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(ChromeConfigItems.prototype, "video_mute", {
- get: function () {
- return utils_1.toBool(this.GetConfig("video_mute", "true"));
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(ChromeConfigItems.prototype, "answer_ignore", {
- get: function () {
- return utils_1.toBool(this.GetConfig("answer_ignore", "false"));
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(ChromeConfigItems.prototype, "video_cdn", {
- get: function () {
- var val = this.GetConfig("video_cdn");
- if (val == "默认") {
- return "";
- }
- return val;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(ChromeConfigItems.prototype, "video_multiple", {
- get: function () {
- return parseFloat(this.GetConfig("video_multiple"));
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(ChromeConfigItems.prototype, "interval", {
- get: function () {
- var interval = parseFloat(this.GetConfig("interval", "0.1"));
- interval = interval * 100;
- return Math.floor(utils_1.randNumber(interval - interval / 2, interval + interval / 2)) / 100;
- },
- enumerable: false,
- configurable: true
- });
- ChromeConfigItems.prototype.SetConfig = function (key, val) {
- return this.config.SetConfig(this.Namespace + key, val);
- };
- Object.defineProperty(ChromeConfigItems.prototype, "topic_interval", {
- get: function () {
- return parseInt(this.GetConfig("topic_interval", "5"));
- },
- set: function (val) {
- this.SetConfig("topic_interval", val);
- },
- enumerable: false,
- configurable: true
- });
- return ChromeConfigItems;
- }());
- exports.ChromeConfigItems = ChromeConfigItems;
- // 后台环境中使用
- function NewBackendConfig() {
- var _this = this;
- return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
- var ret;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- ret = new backendConfig();
- return [4 /*yield*/, ret.updateCache()];
- case 1:
- _a.sent();
- resolve(ret);
- return [2 /*return*/];
- }
- });
- }); });
- }
- exports.NewBackendConfig = NewBackendConfig;
- var configWatch = /** @class */ (function () {
- function configWatch() {
- this.watchCallback = new Map();
- }
- configWatch.prototype.WatchEvent = function (key, val) {
- var list = this.watchCallback.get(key);
- if (list != undefined) {
- list.forEach(function (v) {
- v(key, val);
- });
- }
- list = this.watchCallback.get("*");
- if (list != undefined) {
- list.forEach(function (v) {
- v(key, val);
- });
- }
- };
- configWatch.prototype.Watch = function (key, callback) {
- var _this = this;
- if (typeof key == "string") {
- this.setWatchMap(key, callback);
- return;
- }
- key.forEach(function (val, index) {
- _this.setWatchMap(val, callback);
- });
- };
- configWatch.prototype.setWatchMap = function (key, callback) {
- var list = this.watchCallback.get(key);
- if (list == undefined) {
- list = new Array();
- }
- list.push(callback);
- this.watchCallback.set(key, list);
- };
- return configWatch;
- }());
- var backendConfig = /** @class */ (function () {
- function backendConfig() {
- var _this = this;
- this.watch = new configWatch();
- chrome.runtime.onMessage.addListener(function (request) {
- if (request.type && request.type == "cxconfig") {
- _this.cache[request.key] = request.value;
- _this.watch.WatchEvent(request.key, request.value);
- _this.updateConfigStorage();
- }
- });
- }
- // 更新配置转为json,存入
- backendConfig.prototype.updateConfigStorage = function () {
- var txt = JSON.stringify(this.cache);
- chrome.storage.sync.set({ "config_storage": txt });
- };
- // 更新缓存
- backendConfig.prototype.updateCache = function () {
- var _this = this;
- return new Promise(function (resolve) {
- chrome.storage.sync.get("config_storage", function (items) {
- if (items["config_storage"]) {
- _this.cache = JSON.parse(items["config_storage"]);
- }
- else {
- _this.cache = {};
- }
- configDefaultValue.forEach(function (val, key) {
- if (_this.cache[key] === undefined) {
- _this.cache[key] = val;
- }
- });
- _this.updateConfigStorage();
- resolve(undefined);
- });
- });
- };
- backendConfig.prototype.GetConfig = function (key, defaultVal) {
- if (this.cache == undefined) {
- application_1.Application.App.log.Fatal("缓存失败!!!");
- return "";
- }
- return this.cache[key] || defaultVal;
- };
- backendConfig.prototype.Watch = function (key, callback) {
- return this.watch.Watch(key, callback);
- };
- backendConfig.prototype.SetConfig = function (key, val) {
- var _this = this;
- return new Promise(function (resolve) {
- var info = {};
- info[key] = val;
- //通知前端和后端
- _this.cache[key] = val;
- chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
- chrome.tabs.sendMessage(tabs[0].id, { type: "cxconfig", key: key, value: val });
- });
- chrome.runtime.sendMessage({ type: "cxconfig", key: key, value: val });
- _this.updateConfigStorage();
- resolve(undefined);
- });
- };
- backendConfig.prototype.ConfigList = function () {
- var _this = this;
- return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (this.cache) {
- return [2 /*return*/, resolve(this.cache)];
- }
- return [4 /*yield*/, this.updateCache()];
- case 1:
- _a.sent();
- resolve(this.cache);
- return [2 /*return*/];
- }
- });
- }); });
- };
- return backendConfig;
- }());
- // 前端环境使用
- function NewFrontendGetConfig() {
- return new frontendGetConfig();
- }
- exports.NewFrontendGetConfig = NewFrontendGetConfig;
- var frontendGetConfig = /** @class */ (function () {
- function frontendGetConfig() {
- var _this = this;
- this.watch = new configWatch();
- this.cache = window.configData || localStorage;
- window.addEventListener('message', function (event) {
- if (event.data.type && event.data.type == "cxconfig") {
- application_1.Application.App.log.Info("配置更新:" + event.data.key + "=" + event.data.value);
- _this.cache[event.data.key] = event.data.value;
- _this.watch.WatchEvent(event.data.key, event.data.value);
- }
- });
- }
- frontendGetConfig.prototype.GetConfig = function (key, defaultVal) {
- if (window.GM_getValue) {
- return window.GM_getValue(key, defaultVal);
- }
- return this.cache[key] || defaultVal;
- };
- frontendGetConfig.prototype.Watch = function (key, callback) {
- return this.watch.Watch(key, callback);
- };
- frontendGetConfig.prototype.SetConfig = function (key, val) {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- this.cache[key] = val;
- if (window.GM_setValue) {
- return [2 /*return*/, window.GM_setValue(key, val)];
- }
- return [2 /*return*/, application_1.Application.App.Client.Send({
- type: "GM_setValue", details: { key: key, val: val },
- })];
- });
- });
- };
- frontendGetConfig.prototype.ConfigList = function () {
- return this.cache;
- };
- return frontendGetConfig;
- }());
- /***/ }),
- /***/ "./src/internal/utils/event.ts":
- /*!*************************************!*\
- !*** ./src/internal/utils/event.ts ***!
- \*************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.EventListener = void 0;
- var EventListener = /** @class */ (function () {
- function EventListener() {
- this.event = {};
- }
- EventListener.prototype.addEventListener = function (event, callback) {
- if (!this.event[event]) {
- this.event[event] = new Array();
- }
- this.event[event].push({
- callback: callback, param: { once: false },
- });
- };
- EventListener.prototype.addEventListenerOnce = function (event, callback) {
- if (!this.event[event]) {
- this.event[event] = new Array();
- }
- this.event[event].push({
- callback: callback, param: { once: true },
- });
- };
- EventListener.prototype.callEvent = function (event) {
- var _this = this;
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- if (!this.event[event]) {
- return;
- }
- var del = new Array();
- this.event[event].forEach(function (v, index) {
- v.callback.apply(_this, args);
- if (v.param.once) {
- del.push(index);
- }
- });
- del.forEach(function (v, index) {
- _this.event[event].splice(v - index, 1);
- });
- };
- return EventListener;
- }());
- exports.EventListener = EventListener;
- /***/ }),
- /***/ "./src/internal/utils/hook.ts":
- /*!************************************!*\
- !*** ./src/internal/utils/hook.ts ***!
- \************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.Hook = void 0;
- var application_1 = __webpack_require__(/*! @App/internal/application */ "./src/internal/application.ts");
- var Hook = /** @class */ (function () {
- function Hook(func, context) {
- this.context = context || window;
- this.func = func;
- }
- Hook.prototype.Middleware = function (call) {
- var name;
- if (typeof this.func == "string") {
- name = this.func;
- }
- else {
- name = this.func.name;
- }
- var old = this.context[name];
- this.context[name] = function () {
- var args = [old];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i + 1] = arguments[_i];
- }
- return call.apply(this, args);
- };
- };
- Hook.HookAjaxRespond = function (url, call) {
- var _this = this;
- if (!this.once) {
- this.match_list = new Map();
- var self_1 = this;
- var hookXMLHttpRequest = new Hook("open", application_1.Application.GlobalContext.XMLHttpRequest.prototype);
- hookXMLHttpRequest.Middleware(function (next) {
- var _this = this;
- var args = [];
- for (var _a = 1; _a < arguments.length; _a++) {
- args[_a - 1] = arguments[_a];
- }
- self_1.match_list.forEach(function (val, key) {
- if (args[1].indexOf(key) != -1) {
- Object.defineProperty(_this, "responseText", {
- configurable: true,
- get: function () {
- return val.call(this, args[1], this.response);
- }
- });
- }
- });
- return next.apply(this, args);
- });
- this.once = true;
- }
- if (typeof url == "string") {
- this.match_list.set(url, call);
- }
- else {
- url.forEach(function (v) {
- _this.match_list.set(v, call);
- });
- }
- };
- return Hook;
- }());
- exports.Hook = Hook;
- /***/ }),
- /***/ "./src/internal/utils/log.ts":
- /*!***********************************!*\
- !*** ./src/internal/utils/log.ts ***!
- \***********************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var __spreadArrays = (this && this.__spreadArrays) || function () {
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
- r[k] = a[j];
- return r;
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.EmptyLog = exports.PageLog = exports.ConsoleLog = void 0;
- var application_1 = __webpack_require__(/*! ../application */ "./src/internal/application.ts");
- __webpack_require__(/*! ../../views/common */ "./src/views/common.ts");
- var utils_1 = __webpack_require__(/*! @App/internal/utils/utils */ "./src/internal/utils/utils.ts");
- // 开发者工具f12处打印日志
- var ConsoleLog = /** @class */ (function () {
- function ConsoleLog() {
- }
- ConsoleLog.prototype.getNowTime = function () {
- var time = new Date();
- return time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds();
- };
- ConsoleLog.prototype.Debug = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- application_1.Application.App.debug && console.info.apply(console, __spreadArrays(["[debug", this.getNowTime(), "]"], args));
- return this;
- };
- ConsoleLog.prototype.Info = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- application_1.Application.App.debug && console.info.apply(console, __spreadArrays(["[info", this.getNowTime(), "]"], args));
- return this;
- };
- ConsoleLog.prototype.Warn = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- console.warn.apply(console, __spreadArrays(["[warn", this.getNowTime(), "]"], args));
- return this;
- };
- ConsoleLog.prototype.Error = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- console.error.apply(console, __spreadArrays(["[error", this.getNowTime(), "]"], args));
- return this;
- };
- ConsoleLog.prototype.Fatal = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- console.error.apply(console, __spreadArrays(["[fatal", this.getNowTime(), "]"], args));
- return this;
- };
- return ConsoleLog;
- }());
- exports.ConsoleLog = ConsoleLog;
- var PageLog = /** @class */ (function () {
- function PageLog() {
- var _this = this;
- this.el = undefined;
- window.addEventListener("load", function () {
- _this.div = document.createElement("div");
- // 主要布局
- _this.div.innerHTML = "\n <div class=\"head\" id=\"tools-head\"> \n <span>\u5C0F\u5DE5\u5177\u901A\u77E5\u6761</span> \n <label class=\"switch\" style=\"width:90px\">\n <input class=\"checkbox-input\" id=\"checkbox\" type=\"checkbox\" checked=\"checked\">\n <label class=\"checkbox\" for=\"checkbox\"></label>\n <span>\u684C\u9762\u901A\u77E5</span>\n </label>\n <span class=\"close\" style=\"float:right; cursor:pointer; margin-right:5px;\">x</span>\n </div>\n <div class=\"main\">\n <div class=\"tools-notice-content\"></div>\n </div>\n ";
- _this.div.className = "tools-logger-panel";
- document.body.appendChild(_this.div);
- _this.el = _this.div.querySelector(".tools-notice-content");
- _this.div.querySelector(".close").onclick = function () {
- _this.el = undefined;
- _this.div.remove();
- };
- var checkbox = _this.div.querySelector("#checkbox");
- checkbox.checked = (application_1.Application.App.config.GetConfig("is_notify") || "true") == "true";
- _this.is_notify = checkbox.checked;
- if (!checkbox.checked) {
- checkbox.removeAttribute("checked");
- }
- var self = _this;
- checkbox.addEventListener("change", function () {
- self.is_notify = this.checked;
- application_1.Application.App.config.SetConfig("is_notify", this.checked.toString());
- });
- setTimeout(function () {
- application_1.Application.CheckUpdate(function (isnew, data) {
- if (data == undefined) {
- _this.Info("检查更新失败.");
- return;
- }
- var html = "";
- if (isnew) {
- html += "<span>[有新版本]</span>";
- }
- html += data.injection;
- _this.Info(html);
- });
- }, 1000);
- //支持拖拽移动
- function getProperty(ele, prop) {
- return parseInt(window.getComputedStyle(ele)[prop]);
- }
- _this.div.style.left = application_1.Application.App.config.GetConfig("notify_tools_x");
- _this.div.style.top = application_1.Application.App.config.GetConfig("notify_tools_y");
- var head = _this.div.querySelector("#tools-head");
- head.onmousedown = function (downEvent) {
- var relaX = downEvent.clientX - _this.div.offsetLeft;
- var relaY = downEvent.clientY - _this.div.offsetTop;
- var windowWidth = window.innerWidth;
- var windowHeight = window.innerHeight;
- var containerWidth = getProperty(_this.div, "width");
- var containerHeight = getProperty(_this.div, "height");
- document.onmousemove = function (moveEvent) {
- var targetX = moveEvent.clientX - relaX;
- var targetY = moveEvent.clientY - relaY;
- if (targetX <= 0)
- targetX = 0;
- if (targetY <= 0)
- targetY = 0;
- if (targetX >= windowWidth - containerWidth)
- targetX = windowWidth - containerWidth;
- if (targetY >= windowHeight - containerHeight)
- targetY = windowHeight - containerHeight;
- _this.div.style.left = targetX + "px";
- _this.div.style.top = targetY + "px";
- };
- document.onmouseup = function () {
- document.onmouseup = null;
- document.onmousemove = null;
- application_1.Application.App.config.SetConfig("notify_tools_x", _this.div.style.left);
- application_1.Application.App.config.SetConfig("notify_tools_y", _this.div.style.top);
- };
- };
- });
- }
- PageLog.prototype.getNowTime = function () {
- var time = new Date();
- return time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds();
- };
- PageLog.prototype.first = function (text, color, background) {
- var new_log = document.createElement("div");
- new_log.innerHTML =
- "\n <div class=\"log\" style=\"border-color: " +
- background +
- "; background-color: " +
- background +
- ";\">\n <p><span style=\"color:" +
- color +
- ";\">" +
- text +
- "</span></p>\n </div>\n ";
- //插入第一个元素前
- var first = document
- .getElementsByClassName("tools-notice-content")[0]
- .getElementsByTagName("div");
- document.querySelector(".tools-notice-content").insertBefore(new_log, first[0]);
- };
- PageLog.prototype.toStr = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- var text = "";
- for (var i = 0; i < args.length; i++) {
- if (typeof args[i] == "object") {
- text += args[i].toString() + "\n";
- }
- else {
- text += args[i] + "\n";
- }
- }
- return text.substring(0, text.length - 1);
- };
- PageLog.prototype.Debug = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- console.info.apply(console, __spreadArrays(["[debug", this.getNowTime(), "]"], args));
- return this;
- };
- PageLog.prototype.Info = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- var text = this.toStr.apply(this, args);
- if (this.el) {
- this.first(text, "#409EFF", "rgba(121, 187, 255, 0.2)");
- }
- else {
- console.info.apply(console, __spreadArrays(["[info", this.getNowTime(), "]"], args));
- }
- return this;
- };
- PageLog.prototype.Warn = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- var text = this.toStr.apply(this, args);
- if (this.el) {
- this.first(text, "#5C3C00", "rgba(250, 236, 216, 0.4)");
- }
- console.warn.apply(console, __spreadArrays(["[warn", this.getNowTime(), "]"], args));
- if (document.hidden && localStorage["is_notify"] == "true") {
- utils_1.Noifications({
- title: "网课小工具",
- text: text + "\n3秒后自动关闭",
- timeout: 3000,
- });
- }
- return this;
- };
- PageLog.prototype.Error = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- var text = this.toStr.apply(this, args);
- if (this.el) {
- this.first(text, "#FFF0F0", "rgba(253, 226, 226, 0.5)");
- }
- console.error.apply(console, __spreadArrays(["[error", this.getNowTime(), "]"], args));
- if (localStorage["is_notify"] == "true") {
- utils_1.Noifications({
- title: "网课小工具",
- text: text,
- });
- }
- return this;
- };
- PageLog.prototype.Fatal = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- var text = this.toStr.apply(this, args);
- if (this.el) {
- this.first(text, "#ff0000", "rgba(253, 226, 226, 0.5)");
- }
- console.error.apply(console, __spreadArrays(["[fatal", this.getNowTime(), "]"], args));
- utils_1.Noifications({
- title: "网课小工具",
- text: text,
- });
- return this;
- };
- return PageLog;
- }());
- exports.PageLog = PageLog;
- var EmptyLog = /** @class */ (function () {
- function EmptyLog() {
- }
- EmptyLog.prototype.Debug = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return this;
- };
- EmptyLog.prototype.Info = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return this;
- };
- EmptyLog.prototype.Warn = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return this;
- };
- EmptyLog.prototype.Error = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return this;
- };
- EmptyLog.prototype.Fatal = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return this;
- };
- return EmptyLog;
- }());
- exports.EmptyLog = EmptyLog;
- /***/ }),
- /***/ "./src/internal/utils/message.ts":
- /*!***************************************!*\
- !*** ./src/internal/utils/message.ts ***!
- \***************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.NewChromeClientMessage = exports.NewChromeServerMessage = exports.NewExtensionClientMessage = exports.NewExtensionServerMessage = void 0;
- function NewExtensionServerMessage(port) {
- return new extensionServerMessage(port);
- }
- exports.NewExtensionServerMessage = NewExtensionServerMessage;
- var extensionServerMessage = /** @class */ (function () {
- function extensionServerMessage(port) {
- this.port = port;
- this.recv();
- }
- extensionServerMessage.prototype.recv = function () {
- var _this = this;
- //监听消息
- chrome.runtime.onConnect.addListener(function (port) {
- if (port.name != _this.port) {
- return;
- }
- port.onMessage.addListener(function (request) {
- _this.acceptCallback(new extensionClientMessage(port), request);
- });
- });
- };
- extensionServerMessage.prototype.Accept = function (callback) {
- this.acceptCallback = callback;
- };
- return extensionServerMessage;
- }());
- var msg = /** @class */ (function () {
- function msg(tag) {
- this.tag = tag;
- }
- msg.prototype.Recv = function (callback) {
- this.recvCallback = callback;
- };
- return msg;
- }());
- // 扩展中使用
- function NewExtensionClientMessage(tag) {
- return new extensionClientMessage(tag);
- }
- exports.NewExtensionClientMessage = NewExtensionClientMessage;
- var extensionClientMessage = /** @class */ (function (_super) {
- __extends(extensionClientMessage, _super);
- function extensionClientMessage(param) {
- var _this = this;
- if (typeof param === 'string') {
- _this = _super.call(this, param) || this;
- _this.connect();
- }
- else {
- _this.conn = param;
- }
- _this.recv();
- return _this;
- }
- extensionClientMessage.prototype.connect = function () {
- this.conn = chrome.runtime.connect({ name: this.tag });
- };
- extensionClientMessage.prototype.recv = function () {
- var _this = this;
- this.conn.onMessage.addListener(function (response) {
- _this.recvCallback(response);
- });
- };
- extensionClientMessage.prototype.Send = function (msg) {
- this.conn.postMessage(msg);
- };
- return extensionClientMessage;
- }(msg));
- // 浏览器中使用
- function NewChromeServerMessage(tag) {
- return new chromeServerMessage(tag);
- }
- exports.NewChromeServerMessage = NewChromeServerMessage;
- var chromeServerMessage = /** @class */ (function () {
- function chromeServerMessage(tag) {
- this.tag = tag;
- this.recv();
- }
- chromeServerMessage.prototype.recv = function () {
- var _this = this;
- window.addEventListener('message', function (event) {
- if (event.data.tag == _this.tag && event.data.conn_tag && event.data.source == "client") {
- _this.acceptCallback(new chromeClientMessage(_this.tag, event.data.conn_tag), event.data.msg);
- }
- });
- };
- chromeServerMessage.prototype.Accept = function (callback) {
- this.acceptCallback = callback;
- };
- return chromeServerMessage;
- }());
- function NewChromeClientMessage(tag) {
- return new chromeClientMessage(tag);
- }
- exports.NewChromeClientMessage = NewChromeClientMessage;
- var chromeClientMessage = /** @class */ (function (_super) {
- __extends(chromeClientMessage, _super);
- function chromeClientMessage(tag, conn) {
- var _this = this;
- if (conn !== undefined) {
- _this = _super.call(this, tag) || this;
- _this.connTag = conn;
- _this.source = "server";
- }
- else {
- _this = _super.call(this, tag) || this;
- _this.connect();
- _this.source = "client";
- }
- return _this;
- }
- chromeClientMessage.prototype.connect = function () {
- var _this = this;
- this.connTag = Math.random();
- window.addEventListener('message', function (event) {
- if (event.data.tag == _this.tag && event.data.conn_tag == _this.connTag && event.data.source == "server") {
- _this.recvCallback && _this.recvCallback(event.data.msg);
- }
- });
- };
- chromeClientMessage.prototype.Send = function (msg) {
- window.postMessage({ tag: this.tag, conn_tag: this.connTag, msg: msg, source: this.source }, '*');
- };
- return chromeClientMessage;
- }(msg));
- /***/ }),
- /***/ "./src/internal/utils/utils.ts":
- /*!*************************************!*\
- !*** ./src/internal/utils/utils.ts ***!
- \*************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.Sleep = exports.UntrustedClick = exports.boolToString = exports.toBool = exports.Noifications = exports.isPhone = exports.getImageBase64 = exports.protocolPrompt = exports.dealHotVersion = exports.substrex = exports.removeHTML = exports.removeHTMLTag = exports.post = exports.get = exports.createBtn = exports.randNumber = exports.RemoveInjected = exports.syncSetChromeStorageLocal = exports.syncGetChromeStorageLocal = exports.InjectedBySrc = exports.Injected = exports.HttpUtils = void 0;
- var application_1 = __webpack_require__(/*! ../application */ "./src/internal/application.ts");
- var HttpUtils = /** @class */ (function () {
- function HttpUtils() {
- }
- HttpUtils.Request = function (info) {
- if (application_1.Application.App.IsBackend) {
- fetch(info.url, info).then(function (body) {
- if (info.json) {
- return body.json();
- }
- else {
- return body.text();
- }
- }).then(function (body) {
- info.success && info.success(body);
- }).catch(function () {
- info.error && info.error();
- });
- return;
- }
- HttpUtils.crossDomainRequest(info);
- };
- HttpUtils.errorCode = function (ret) {
- if (!ret.code) {
- return false;
- }
- switch (ret.code) {
- case -1: {
- application_1.Application.App.log.Info(ret.msg);
- break;
- }
- case -2: {
- application_1.Application.App.log.Warn(ret.msg);
- break;
- }
- case 1: {
- application_1.Application.App.log.Info(ret.msg);
- return false;
- }
- default: {
- return false;
- }
- }
- return true;
- };
- HttpUtils.crossDomainRequest = function (info) {
- if (window.hasOwnProperty('GM_xmlhttpRequest')) {
- //兼容油猴
- info.data = info.body;
- info.onreadystatechange = function (response) {
- if (response.readyState == 4) {
- if (response.status == 200) {
- if (info.json) {
- var ret = JSON.parse(response.responseText);
- if (HttpUtils.errorCode(ret)) {
- info.error && info.error();
- return;
- }
- info.success && info.success(ret);
- }
- else {
- info.success && info.success(response.responseText);
- }
- }
- else {
- info.error && info.error();
- }
- }
- };
- window.GM_xmlhttpRequest(info);
- }
- else {
- var client = application_1.Application.App.Client;
- client.Recv(function (data) {
- if (data.code == 0) {
- if (info.json) {
- if (HttpUtils.errorCode(data.body)) {
- info.error && info.error();
- return;
- }
- }
- info.success && info.success(data.body);
- }
- else {
- info.error && info.error();
- }
- });
- client.Send({
- type: "GM_xmlhttpRequest", info: {
- url: info.url,
- method: info.method,
- json: info.json,
- body: info.body,
- headers: info.headers,
- }
- });
- }
- };
- HttpUtils.HttpGet = function (url, info) {
- info.url = url;
- this.Request(info);
- };
- HttpUtils.HttpPost = function (url, body, info) {
- info.url = url;
- info.body = body;
- if (!info.headers) {
- info.headers = {};
- }
- if (!info.headers["Content-Type"]) {
- info.headers["Content-Type"] = "application/x-www-form-urlencoded";
- }
- info.method = "POST";
- this.Request(info);
- };
- HttpUtils.SendRequest = function (client, data) {
- if (!data.info) {
- return;
- }
- var info = data.info;
- if (application_1.Application.App.IsBackend) {
- info.success = function (body) {
- client.Send({ body: body, code: 0 });
- };
- info.error = function () {
- client.Send({ code: -1 });
- };
- HttpUtils.Request(info);
- }
- else {
- // content 做转发
- var extClient = application_1.Application.App.Client;
- extClient.Send({ type: "GM_xmlhttpRequest", info: info });
- extClient.Recv(function (data) {
- client.Send(data);
- });
- }
- };
- return HttpUtils;
- }());
- exports.HttpUtils = HttpUtils;
- /**
- * 通过源码注入js资源
- * @param doc
- * @param url
- * @constructor
- */
- function Injected(doc, source) {
- var temp = doc.createElement('script');
- temp.setAttribute('type', 'text/javascript');
- temp.innerHTML = source;
- temp.className = "injected-js";
- doc.documentElement.appendChild(temp);
- return temp;
- }
- exports.Injected = Injected;
- /**
- * 通过源码注入js资源
- * @param doc
- * @param url
- * @constructor
- */
- function InjectedBySrc(doc, source) {
- var temp = doc.createElement('script');
- temp.setAttribute('type', 'text/javascript');
- temp.src = source;
- temp.className = "injected-js";
- doc.documentElement.appendChild(temp);
- return temp;
- }
- exports.InjectedBySrc = InjectedBySrc;
- function syncGetChromeStorageLocal(key) {
- return new Promise(function (resolve) { return (chrome.storage.local.get(key, function (value) {
- resolve(value[key]);
- })); });
- }
- exports.syncGetChromeStorageLocal = syncGetChromeStorageLocal;
- function syncSetChromeStorageLocal(key, value) {
- var tmp = {};
- tmp[key] = value;
- return new Promise(function (resolve) { return (chrome.storage.local.set(tmp, function () {
- resolve();
- })); });
- }
- exports.syncSetChromeStorageLocal = syncSetChromeStorageLocal;
- /**
- * 移除注入js
- * @param doc
- */
- function RemoveInjected(doc) {
- var resource = doc.getElementsByClassName("injected-js");
- for (var i = 0; i < resource.length; i++) {
- resource[i].remove();
- }
- }
- exports.RemoveInjected = RemoveInjected;
- function randNumber(minNum, maxNum) {
- return Math.floor(Math.random() * (maxNum - minNum + 1) + minNum);
- }
- exports.randNumber = randNumber;
- /**
- * 创建一个按钮
- * @param title
- * @param description
- * @param id
- */
- function createBtn(title, description, className, id) {
- if (description === void 0) { description = ""; }
- if (className === void 0) { className = ""; }
- if (id === void 0) { id = ""; }
- var btn = document.createElement('button');
- btn.innerText = title;
- btn.id = id;
- btn.title = description;
- btn.className = className;
- return btn;
- }
- exports.createBtn = createBtn;
- /**
- * get请求
- * @param {*} url
- */
- function get(url, success) {
- var xmlhttp = createRequest();
- xmlhttp.open("GET", url, true);
- xmlhttp.onreadystatechange = function () {
- if (this.readyState == 4) {
- if (this.status == 200) {
- success && success(this.responseText, this.resource);
- }
- else {
- xmlhttp.errorCallback && xmlhttp.errorCallback(this);
- }
- }
- };
- xmlhttp.send();
- return xmlhttp;
- }
- exports.get = get;
- /**
- * post请求
- * @param {*} url
- * @param {*} data
- * @param {*} json
- */
- function post(url, data, json, success) {
- if (json === void 0) { json = true; }
- var xmlhttp = createRequest();
- xmlhttp.open("POST", url, true);
- if (json) {
- xmlhttp.setRequestHeader("Content-Type", "application/json");
- }
- else {
- xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- }
- xmlhttp.onreadystatechange = function () {
- if (this.readyState == 4) {
- if (this.status == 200) {
- success && success(this.responseText);
- }
- else {
- xmlhttp.errorCallback && xmlhttp.errorCallback(this);
- }
- }
- };
- xmlhttp.send(data);
- return xmlhttp;
- }
- exports.post = post;
- /**
- * 创建http请求
- */
- function createRequest() {
- var xmlhttp;
- if (window.XMLHttpRequest) {
- xmlhttp = new XMLHttpRequest();
- }
- else {
- xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
- }
- xmlhttp.error = function (callback) {
- xmlhttp.errorCallback = callback;
- return xmlhttp;
- };
- xmlhttp.withCredentials = true;
- return xmlhttp;
- }
- // 移除html tag
- function removeHTMLTag(html) {
- var revHtml = /<.*?>/g;
- html = html.replace(revHtml, '');
- html = html.replace(/(^\s+)|(\s+$)/g, '');
- return html;
- }
- exports.removeHTMLTag = removeHTMLTag;
- /**
- * 去除html标签和处理中文
- * @param {string} html
- */
- function removeHTML(html) {
- //先处理带src和href属性的标签
- var srcReplace = /<img.*?src="(.*?)".*?>/g;
- html = html.replace(srcReplace, '$1');
- srcReplace = /(<iframe.+?>)\s+?(<\/iframe>)/g;
- html = html.replace(srcReplace, '$1$2');
- srcReplace = /<(iframe|a).*?(src|href)="(.*?)".*?>(.*?)<\/(iframe|a)>/g;
- html = html.replace(srcReplace, '$3$4');
- var revHtml = /<.*?>/g;
- html = html.replace(revHtml, '');
- html = html.replace(/(^\s+)|(\s+$)/g, '');
- html = dealSymbol(html);
- return html.replace(/ /g, ' ')
- .replace(/"/g, "\"").replace(/>/g, ">")
- .replace(/</g, "<").replace(/&/g, '&').trim();
- }
- exports.removeHTML = removeHTML;
- /**
- * 处理符号
- * @param topic
- */
- function dealSymbol(topic) {
- topic = topic.replace(/,/g, ',');
- topic = topic.replace(/(/g, '(');
- topic = topic.replace(/)/g, ')');
- topic = topic.replace(/?/g, '?');
- topic = topic.replace(/:/g, ':');
- topic = topic.replace(/。/g, '.');
- topic = topic.replace(/[“”]/g, '"');
- return topic;
- }
- /**
- * 取中间文本
- * @param str
- * @param left
- * @param right
- */
- function substrex(str, left, right) {
- var leftPos = str.indexOf(left) + left.length;
- var rightPos = str.indexOf(right, leftPos);
- return str.substring(leftPos, rightPos);
- }
- exports.substrex = substrex;
- function dealHotVersion(hotversion) {
- hotversion = hotversion.substring(0, hotversion.indexOf(".") + 1) + hotversion.substring(hotversion.indexOf(".") + 1).replace(".", "");
- return Number(hotversion);
- }
- exports.dealHotVersion = dealHotVersion;
- function protocolPrompt(content, key, keyword) {
- keyword = keyword || "yes";
- if (localStorage[key] == undefined || localStorage[key] != 1) {
- var msg = prompt(content + "\n如果以后不想再弹出本对话框并且同意请在下方填写\"" + keyword + "\"");
- if (msg === null)
- return false;
- if (keyword != msg) {
- return false;
- }
- localStorage[key] = 1;
- }
- return true;
- }
- exports.protocolPrompt = protocolPrompt;
- function getImageBase64(img, ext) {
- var canvas = document.createElement("canvas");
- canvas.width = img.width;
- canvas.height = img.height;
- var ctx = canvas.getContext("2d");
- ctx.drawImage(img, 0, 0, img.width, img.height);
- var dataURL = canvas.toDataURL("image/" + ext, 0.75); //节省可怜的流量>_<,虽然好像没有啥
- canvas = null;
- return dataURL;
- }
- exports.getImageBase64 = getImageBase64;
- function isPhone() {
- return /Android|iPhone/i.test(navigator.userAgent);
- }
- exports.isPhone = isPhone;
- function Noifications(details) {
- if (window.hasOwnProperty("GM_notification")) {
- window.GM_notification(details);
- }
- else {
- var client = application_1.Application.App.Client;
- client.Send({
- type: "GM_notification", details: details,
- });
- application_1.Application.App.Client.Send(details);
- }
- }
- exports.Noifications = Noifications;
- function toBool(val) {
- if (typeof val == "boolean") {
- return val;
- }
- return val == "true";
- }
- exports.toBool = toBool;
- function boolToString(val) {
- if (val) {
- return "true";
- }
- return "false";
- }
- exports.boolToString = boolToString;
- function UntrustedClick(el) {
- if (CAT_click != undefined) {
- CAT_click(el);
- return true;
- }
- var untrusted = new MouseEvent("click", { "clientX": 10086 });
- if (!untrusted.isTrusted) {
- application_1.Application.App.log.Warn("扩展执行错误");
- return false;
- }
- return el.dispatchEvent(untrusted);
- }
- exports.UntrustedClick = UntrustedClick;
- function Sleep(timeout) {
- return new Promise(function (resolve) {
- setTimeout(function () {
- resolve(undefined);
- }, timeout);
- });
- }
- exports.Sleep = Sleep;
- /***/ }),
- /***/ "./src/mooc/chaoxing/utils.ts":
- /*!************************************!*\
- !*** ./src/mooc/chaoxing/utils.ts ***!
- \************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.CreateNoteLine = exports.CssBtn = void 0;
- /**
- * 美化按钮
- */
- function CssBtn(btn) {
- btn.style.outline = 'none';
- btn.style.border = '0';
- btn.style.background = '#7d9d35';
- btn.style.color = '#fff';
- btn.style.borderRadius = '4px';
- btn.style.padding = '2px 8px';
- btn.style.cursor = 'pointer';
- btn.style.fontSize = '12px';
- btn.style.marginLeft = '4px';
- btn.onmousemove = function () {
- btn.style.boxShadow = '1px 1px 1px 1px #ccc';
- };
- btn.onmouseout = function () {
- btn.style.boxShadow = '';
- };
- return btn;
- }
- exports.CssBtn = CssBtn;
- function CreateNoteLine(text, label, append, after) {
- var p = document.createElement("p");
- p.style.color = "red";
- p.style.fontSize = "14px";
- p.className = "prompt-line-" + label;
- p.innerHTML = text;
- if (append != undefined) {
- append.append(p);
- }
- if (after != undefined) {
- after.after(p);
- }
- return p;
- }
- exports.CreateNoteLine = CreateNoteLine;
- /***/ }),
- /***/ "./src/mooc/course163/course163.ts":
- /*!*****************************************!*\
- !*** ./src/mooc/course163/course163.ts ***!
- \*****************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.Course163 = void 0;
- var hook_1 = __webpack_require__(/*! @App/internal/utils/hook */ "./src/internal/utils/hook.ts");
- __webpack_require__(/*! ../../views/common */ "./src/views/common.ts");
- var application_1 = __webpack_require__(/*! @App/internal/application */ "./src/internal/application.ts");
- var task_1 = __webpack_require__(/*! @App/mooc/course163/task */ "./src/mooc/course163/task.ts");
- var utils_1 = __webpack_require__(/*! @App/internal/utils/utils */ "./src/internal/utils/utils.ts");
- var Course163 = /** @class */ (function () {
- function Course163() {
- }
- Course163.prototype.Init = function () {
- this.hookAjax();
- };
- Course163.prototype.hookAjax = function () {
- var _this = this;
- hook_1.Hook.HookAjaxRespond(["CourseBean.getLessonUnitLearnVo.dwr", "MocQuizBean.getQuizPaperDto.dwr", "PostBean.getPaginationReplys.dwr"], function (url, resp) {
- var task = task_1.TaskFactory.CreateTask(url, resp);
- if (task) {
- setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
- var _a, autonext;
- var _this = this;
- return __generator(this, function (_b) {
- switch (_b.label) {
- case 0:
- clearInterval(this.delayTimer);
- _a = this.lastTask;
- if (!_a) return [3 /*break*/, 2];
- return [4 /*yield*/, this.lastTask.Stop()];
- case 1:
- _a = (_b.sent());
- _b.label = 2;
- case 2:
- _a;
- this.lastTask = task;
- this.lastTask.addEventListener("complete", function () {
- _this.delay(function () { return __awaiter(_this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4 /*yield*/, this.lastTask.Submit()];
- case 1:
- _a.sent();
- this.nextTask();
- return [2 /*return*/];
- }
- });
- }); });
- });
- return [4 /*yield*/, this.lastTask.Init()];
- case 3:
- _b.sent();
- if (!application_1.Application.App.config.auto) return [3 /*break*/, 5];
- autonext = document.querySelector(".j-autoNext");
- if (autonext && autonext.checked) {
- utils_1.UntrustedClick(autonext);
- }
- return [4 /*yield*/, this.lastTask.Start()];
- case 4:
- _b.sent();
- _b.label = 5;
- case 5: return [2 /*return*/];
- }
- });
- }); }, 0);
- }
- return resp;
- });
- hook_1.Hook.HookAjaxRespond("MocQuizBean.fetchQuestions", function (url, resp) {
- if (resp.indexOf("{questions:s0}") > 0) {
- resp = resp.replace("{questions:s0}", "{questions:{}}");
- }
- return resp;
- });
- };
- Course163.prototype.nextTask = function () {
- var _this = this;
- var unit = document.querySelectorAll(".j-unitslist.unitslist.f-cb > .f-fl");
- var ret = this.next(unit, function (el) {
- return el.className.indexOf("current") > 0;
- });
- if (ret) {
- return utils_1.UntrustedClick(ret);
- }
- //二级
- var tmp = function (type) {
- var now = document.querySelector(".f-fl.j-" + type + " .up.j-up.f-thide");
- var all = document.querySelectorAll(".f-fl.j-" + type + " .f-bg.j-list > .f-thide");
- return _this.next(all, function (el) {
- //什么魔鬼,空格不同
- return el.innerText.replace(/\s/g, "") == now.innerText.replace(/\s/g, "");
- });
- };
- ret = tmp("lesson");
- if (ret) {
- return utils_1.UntrustedClick(ret);
- }
- //顶层
- ret = tmp("chapter");
- if (ret) {
- utils_1.UntrustedClick(ret);
- var all = document.querySelectorAll(".f-fl.j-lesson .f-bg.j-list > .f-thide");
- return utils_1.UntrustedClick(all[0]);
- }
- application_1.Application.App.log.Warn("任务结束了");
- return alert("任务结束了");
- };
- Course163.prototype.next = function (all, ok) {
- var flag = false;
- for (var i = 0; i < all.length; i++) {
- if (ok(all[i])) {
- flag = true;
- }
- else if (flag) {
- return all[i];
- }
- }
- return null;
- };
- Course163.prototype.delay = function (func) {
- var interval = application_1.Application.App.config.interval;
- application_1.Application.App.log.Info(interval + "分钟后自动切换下一个任务点");
- this.delayTimer = setTimeout(function () {
- application_1.Application.App.config.auto && func();
- }, interval * 60000);
- };
- return Course163;
- }());
- exports.Course163 = Course163;
- /***/ }),
- /***/ "./src/mooc/course163/platform.ts":
- /*!****************************************!*\
- !*** ./src/mooc/course163/platform.ts ***!
- \****************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.Course163Platform = void 0;
- var course163_1 = __webpack_require__(/*! ./course163 */ "./src/mooc/course163/course163.ts");
- var application_1 = __webpack_require__(/*! @App/internal/application */ "./src/internal/application.ts");
- var Course163Platform = /** @class */ (function () {
- function Course163Platform() {
- }
- Course163Platform.prototype.CreateMooc = function () {
- if (document.URL.indexOf("www.icourse163.org") > 0) {
- application_1.Application.App.config.SetNamespace("mooc163");
- return new course163_1.Course163();
- }
- return null;
- };
- return Course163Platform;
- }());
- exports.Course163Platform = Course163Platform;
- /***/ }),
- /***/ "./src/mooc/course163/question.ts":
- /*!****************************************!*\
- !*** ./src/mooc/course163/question.ts ***!
- \****************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.CourseTopic = exports.CourseQueryAnswer = void 0;
- var topic_1 = __webpack_require__(/*! @App/internal/app/topic */ "./src/internal/app/topic.ts");
- var question_1 = __webpack_require__(/*! @App/internal/app/question */ "./src/internal/app/question.ts");
- var utils_1 = __webpack_require__(/*! ../chaoxing/utils */ "./src/mooc/chaoxing/utils.ts");
- var utils_2 = __webpack_require__(/*! @App/internal/utils/utils */ "./src/internal/utils/utils.ts");
- var application_1 = __webpack_require__(/*! @App/internal/application */ "./src/internal/application.ts");
- var CourseQueryAnswer = /** @class */ (function () {
- function CourseQueryAnswer() {
- }
- CourseQueryAnswer.prototype.QueryQuestions = function () {
- var _this = this;
- var ret = new Array();
- var timu = document.querySelectorAll(".u-questionItem");
- timu.forEach(function (val) {
- ret.push(_this.createQuestion(val));
- });
- return ret;
- };
- CourseQueryAnswer.prototype.createQuestion = function (el) {
- if (el.querySelector(".optionCnt span.u-icon-correct")) {
- return new JudgeQuestion(el, 3);
- }
- else if (el.querySelector("input[type='radio']") != null) {
- return new CourseQuestion(el, 1);
- }
- else if (el.querySelector("input[type='checkbox']") != null) {
- return new CourseQuestion(el, 2);
- }
- else if (el.querySelector("textarea") != null) {
- return new FillQuestion(el, 4);
- }
- return new CourseQuestion(el, -1);
- };
- return CourseQueryAnswer;
- }());
- exports.CourseQueryAnswer = CourseQueryAnswer;
- //TODO:优化
- var CourseQuestion = /** @class */ (function () {
- function CourseQuestion(el, type) {
- this.el = el;
- this.type = type;
- this.RemoveNotice();
- }
- CourseQuestion.prototype.GetType = function () {
- return this.type;
- };
- CourseQuestion.prototype.GetTopic = function () {
- return this.dealImgDomain(this.el.querySelector(".f-richEditorText.j-richTxt").innerHTML);
- };
- CourseQuestion.prototype.RemoveNotice = function () {
- this.el.querySelectorAll(".prompt-line-answer").forEach(function (v) {
- v.remove();
- });
- };
- CourseQuestion.prototype.AddNotice = function (str) {
- utils_1.CreateNoteLine(str, "answer", this.el);
- };
- CourseQuestion.prototype.SetStatus = function (status) {
- this.AddNotice(question_1.TopicStatusString(status));
- };
- CourseQuestion.prototype.getContent = function (el) {
- return el.querySelector(".f-fl.optionCnt").innerHTML;
- };
- CourseQuestion.prototype.getOption = function (el) {
- return el.querySelector(".f-fl.optionPos").innerHTML.substring(0, 1);
- };
- CourseQuestion.prototype.fill = function (el, content) {
- if (!el.parentElement.querySelector("input").checked) {
- utils_2.UntrustedClick(el.parentElement.querySelector("input"));
- }
- content = content.replace(/style=".*?"/, "");
- content = content.replace(/(<p>|<\/p>)/, "");
- this.AddNotice(this.getOption(el) + ":" + content);
- };
- CourseQuestion.prototype.Random = function () {
- var opts = this.options();
- var pos = utils_2.randNumber(0, opts.length - 1);
- this.fill(opts[pos], this.getContent(opts[pos - 1]));
- return "random";
- };
- CourseQuestion.prototype.options = function () {
- return this.el.querySelectorAll(".u-tbl.f-pr.f-cb");
- };
- CourseQuestion.prototype.dealImgDomain = function (content) {
- //移除域名对比,也不知道还有没有花里胡哨的
- content = content.replace(/"http(s|):\/\/edu-image.nosdn.127.net\/(.*?)"/, "\"http://nos.netease.com/edu-image/$2\"");
- content = content.replace(/"http(s|):\/\/(.*?)\//g, "\"");
- return content;
- };
- CourseQuestion.prototype.Fill = function (answer) {
- var _this = this;
- return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
- var options, flag, i, n;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- options = this.options();
- flag = false;
- i = 0;
- _a.label = 1;
- case 1:
- if (!(i < answer.correct.length)) return [3 /*break*/, 7];
- n = 0;
- _a.label = 2;
- case 2:
- if (!(n < options.length)) return [3 /*break*/, 6];
- if (!answer.Equal(this.dealImgDomain(this.getContent(options[n])), this.dealImgDomain(answer.correct[i].content))) return [3 /*break*/, 5];
- this.fill(options[n], answer.correct[i].content);
- if (!(this.GetType() == 2 && i != answer.correct.length - 1)) return [3 /*break*/, 4];
- //多选
- return [4 /*yield*/, utils_2.Sleep(application_1.Application.App.config.topic_interval * 1000)];
- case 3:
- //多选
- _a.sent();
- _a.label = 4;
- case 4:
- flag = true;
- _a.label = 5;
- case 5:
- n++;
- return [3 /*break*/, 2];
- case 6:
- i++;
- return [3 /*break*/, 1];
- case 7:
- if (flag) {
- return [2 /*return*/, resolve("ok")];
- }
- return [2 /*return*/, resolve("no_match")];
- }
- });
- }); });
- };
- CourseQuestion.prototype.Correct = function () {
- return null;
- };
- return CourseQuestion;
- }());
- var FillQuestion = /** @class */ (function (_super) {
- __extends(FillQuestion, _super);
- function FillQuestion() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- FillQuestion.prototype.Random = function () {
- return "no_support_random";
- };
- FillQuestion.prototype.Fill = function (answer) {
- var _this = this;
- return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
- var el, match;
- return __generator(this, function (_a) {
- el = this.el.querySelector("textarea");
- el.focus();
- if (match = answer.correct[0].content.match(/^[\(\[]([\d\.]+),([\d\.]+)[\)\]]$/)) {
- //范围题
- el.value = ((parseFloat(match[1]) + parseFloat(match[2])) / 2).toString();
- this.AddNotice("填空 取值范围:" + answer.correct[0].content);
- }
- else {
- el.value = answer.correct[0].content.split("##%_YZPRLFH_%##")[0];
- this.AddNotice("填空:" + answer.correct[0].content.replace("##%_YZPRLFH_%##", " 或 "));
- }
- return [2 /*return*/, resolve("ok")];
- });
- }); });
- };
- return FillQuestion;
- }(CourseQuestion));
- var JudgeQuestion = /** @class */ (function (_super) {
- __extends(JudgeQuestion, _super);
- function JudgeQuestion() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- JudgeQuestion.prototype.Fill = function (answer) {
- var _this = this;
- return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
- var el;
- return __generator(this, function (_a) {
- if (answer.correct[0].content) {
- el = this.el.querySelector(".u-tbl.f-pr.f-cb .u-icon-correct").parentElement.parentElement;
- }
- else {
- el = this.el.querySelector(".u-tbl.f-pr.f-cb .u-icon-wrong").parentElement.parentElement;
- }
- this.fill(el, this.getContent(el));
- return [2 /*return*/, resolve("ok")];
- });
- }); });
- };
- return JudgeQuestion;
- }(CourseQuestion));
- var CourseTopic = /** @class */ (function (_super) {
- __extends(CourseTopic, _super);
- function CourseTopic() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- CourseTopic.prototype.Init = function () {
- return null;
- };
- CourseTopic.prototype.Submit = function () {
- return null;
- };
- return CourseTopic;
- }(topic_1.Topic));
- exports.CourseTopic = CourseTopic;
- /***/ }),
- /***/ "./src/mooc/course163/task.ts":
- /*!************************************!*\
- !*** ./src/mooc/course163/task.ts ***!
- \************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.DiscussTask = exports.CourseTopicTask = exports.VideoTask = exports.NoSupportTask = exports.TaskFactory = void 0;
- var task_1 = __webpack_require__(/*! @App/internal/app/task */ "./src/internal/app/task.ts");
- var application_1 = __webpack_require__(/*! @App/internal/application */ "./src/internal/application.ts");
- var utils_1 = __webpack_require__(/*! @App/internal/utils/utils */ "./src/internal/utils/utils.ts");
- var question_1 = __webpack_require__(/*! @App/mooc/course163/question */ "./src/mooc/course163/question.ts");
- var question_2 = __webpack_require__(/*! @App/internal/app/question */ "./src/internal/app/question.ts");
- var TaskFactory = /** @class */ (function () {
- function TaskFactory() {
- }
- TaskFactory.CreateTask = function (url, resp) {
- if (resp.indexOf("paper:s") > 0) {
- CourseTopicTask.collegeAnswer(this.getvalue(resp, resp.match(/,paper:(.*?),/)[1]));
- return new CourseTopicTask();
- }
- else if (resp.indexOf("tname:\"") > 0) {
- if (resp.indexOf("answers:s") > 0) {
- CourseTopicTask.collegeAnswer(this.getvalue(resp, resp.match(/,objectiveQList:(.*?),/)[1]));
- }
- return new CourseTopicTask(resp);
- }
- else if (resp.indexOf("videoVo:s") > 0) {
- return new VideoTask();
- }
- else if (resp.indexOf("list:s") > 0 && url.indexOf("PostBean.getPaginationReplys") > 0) {
- return new DiscussTask(this.getvalue(resp, resp.match(/,list:(.*?),/)[1]));
- }
- else if (resp.indexOf(",post:s") > 0) {
- return null;
- }
- return new NoSupportTask();
- };
- TaskFactory.getvalue = function (str, ret) {
- try {
- ret = ret || "s0";
- var script = str.match(/^([\s\S]+?)dwr.engine._remoteHandleCallback/)[1];
- script = "function a(){" + script + ";return " + ret + ";}a();";
- return eval(script);
- }
- catch (e) {
- application_1.Application.App.log.Error("获取题目发生了一个错误", e);
- }
- return null;
- };
- return TaskFactory;
- }());
- exports.TaskFactory = TaskFactory;
- var NoSupportTask = /** @class */ (function (_super) {
- __extends(NoSupportTask, _super);
- function NoSupportTask() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- NoSupportTask.prototype.Start = function () {
- var _this = this;
- return new Promise(function (resolve) {
- resolve();
- application_1.Application.App.log.Info("暂不支持的类型,跳过");
- _this.callEvent("complete");
- });
- };
- NoSupportTask.prototype.Done = function () {
- return true;
- };
- NoSupportTask.prototype.Type = function () {
- return "other";
- };
- return NoSupportTask;
- }(task_1.Task));
- exports.NoSupportTask = NoSupportTask;
- var VideoTask = /** @class */ (function (_super) {
- __extends(VideoTask, _super);
- function VideoTask() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- VideoTask.prototype.Init = function () {
- var _this = this;
- return new Promise(function (resolve) {
- _this.timer = setInterval(function () {
- var video = document.querySelector("video[id]");
- if (video) {
- clearInterval(_this.timer);
- _this.video = video;
- _this.video.addEventListener("loadstart", function () {
- _this.initVideo();
- });
- _this.video.addEventListener("ended", function () {
- _this.callEvent("complete");
- });
- _this.callEvent("load");
- application_1.Application.App.log.Debug("视频加载完成");
- resolve();
- }
- }, 500);
- });
- };
- VideoTask.prototype.Done = function () {
- return false;
- };
- VideoTask.prototype.Stop = function () {
- var _this = this;
- return new Promise(function (resolve) {
- clearInterval(_this.timer);
- _this.callEvent("stop");
- resolve();
- });
- };
- VideoTask.prototype.initVideo = function () {
- this.video.muted = application_1.Application.App.config.video_mute;
- if (application_1.Application.App.config.video_multiple > 1) {
- this.video.playbackRate = application_1.Application.App.config.video_multiple;
- }
- };
- VideoTask.prototype.Start = function () {
- var _this = this;
- return new Promise(function (resolve) {
- _this.initVideo();
- _this.video.play();
- _this.timer = setInterval(function () {
- application_1.Application.App.config.auto && _this.video.paused && _this.video.play();
- }, 5000);
- resolve();
- });
- };
- VideoTask.prototype.Type = function () {
- return "video";
- };
- return VideoTask;
- }(task_1.Task));
- exports.VideoTask = VideoTask;
- var CourseTopicTask = /** @class */ (function (_super) {
- __extends(CourseTopicTask, _super);
- function CourseTopicTask(resp) {
- var _this = _super.call(this) || this;
- var info = "";
- if (resp) {
- info = utils_1.substrex(resp, ",{aid:", ",");
- }
- var prefix = "";
- if (document.URL.indexOf("cid") > 0) {
- prefix = "c-";
- }
- _this.bank = new question_2.ToolsQuestionBankFacade("mooc163", {
- refer: document.URL,
- id: prefix + CourseTopicTask.getid(),
- info: info,
- });
- if (resp) {
- _this.bank.CheckCourse();
- }
- return _this;
- }
- CourseTopicTask.getid = function () {
- var id = document.URL.match(/(\?id|cid)=(.*?)($|&)/);
- if (!id) {
- id = document.URL.match(/(&id)=(.*?)$/);
- }
- if (!id) {
- return "";
- }
- return id[2];
- };
- CourseTopicTask.collegeAnswer = function (resp) {
- var id = this.getid();
- if (id == "") {
- return;
- }
- var prefix = "";
- if (document.URL.indexOf("cid") > 0) {
- prefix = "c-";
- }
- var bank = new question_2.ToolsQuestionBank("mooc163", {
- refer: document.URL,
- id: prefix + id,
- });
- var answer = new Array();
- var options;
- options = resp.objectiveQList;
- if (options == undefined) {
- options = resp;
- }
- if (options == undefined) {
- return;
- }
- //TODO:优化,太难看了
- for (var i = 0; i < options.length; i++) {
- var topic = options[i];
- if (topic.type != 1 && topic.type != 2) {
- if (topic.type == 3) {
- var tmpAnswer_1 = new question_2.PushAnswer();
- tmpAnswer_1.topic = topic.title;
- tmpAnswer_1.type = 4;
- tmpAnswer_1.correct = new Array();
- if (!topic.stdAnswer) {
- continue;
- }
- tmpAnswer_1.correct.push({
- option: "一", content: topic.stdAnswer,
- });
- answer.push(tmpAnswer_1);
- }
- else if (topic.type == 4) {
- var tmpAnswer_2 = new question_2.PushAnswer();
- tmpAnswer_2.topic = topic.title;
- tmpAnswer_2.type = 3;
- tmpAnswer_2.correct = new Array();
- if (!topic.optionDtos) {
- continue;
- }
- for (var n = 0; n < topic.optionDtos.length; n++) {
- if (topic.optionDtos[n].answer) {
- tmpAnswer_2.correct.push({
- option: "正确" == topic.optionDtos[n].content,
- content: "正确" == topic.optionDtos[n].content,
- });
- break;
- }
- }
- answer.push(tmpAnswer_2);
- }
- continue;
- }
- if (!topic.optionDtos) {
- continue;
- }
- var option = new Array();
- var correct = new Array();
- var tmpAnswer = new question_2.PushAnswer();
- tmpAnswer.topic = topic.title;
- tmpAnswer.type = topic.type;
- for (var i_1 = 0; i_1 < topic.optionDtos.length; i_1++) {
- var opt = { content: topic.optionDtos[i_1].content, option: String.fromCharCode(65 + i_1) };
- if (topic.optionDtos[i_1].answer) {
- correct.push(opt);
- }
- option.push(opt);
- }
- if (correct.length <= 0) {
- return;
- }
- tmpAnswer.correct = correct;
- tmpAnswer.answers = option;
- answer.push(tmpAnswer);
- }
- bank.Push(answer);
- };
- CourseTopicTask.prototype.Init = function () {
- var _this = this;
- return new Promise(function (resolve) {
- setTimeout(function () {
- if (document.querySelector("#tools-search")) {
- document.querySelector("#tools-search").remove();
- }
- var search = utils_1.createBtn("搜索答案", "点击搜索答案", "cx-btn mooc163-search", "tools-search");
- var divel = document.querySelector(".j-unitct .m-learnunitUI");
- if (!divel) {
- divel = document.querySelector(".u-learn-moduletitle");
- }
- _this.topic = new question_1.CourseTopic(document, _this.bank);
- _this.topic.SetQueryQuestions(new question_1.CourseQueryAnswer());
- search.onclick = function () { return __awaiter(_this, void 0, void 0, function () {
- var ret;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- search.innerText = "搜索中...";
- return [4 /*yield*/, this.Start()];
- case 1:
- ret = _a.sent();
- search.innerText = question_2.QuestionStatusString(ret);
- return [2 /*return*/];
- }
- });
- }); };
- divel.insertBefore(search, divel.firstChild);
- resolve();
- }, 1000);
- });
- };
- CourseTopicTask.prototype.Done = function () {
- return false;
- };
- CourseTopicTask.prototype.Type = function () {
- return "topic";
- };
- CourseTopicTask.prototype.Start = function () {
- var _this = this;
- return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
- var ret;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- utils_1.protocolPrompt("你正准备使用中国慕课的答题功能,相应的我们需要你的正确答案,同意之后扩展将自动检索你的所有答案\n* 本项选择不会影响你的正常使用(协议当前版本有效)\n* 手动点击答题结果页面自动采集页面答案\n", "course_answer_collect_v2", "我同意");
- return [4 /*yield*/, this.topic.QueryAnswer()];
- case 1:
- ret = _a.sent();
- this.callEvent("complete");
- resolve(ret);
- return [2 /*return*/];
- }
- });
- }); });
- };
- CourseTopicTask.prototype.Submit = function () {
- return new Promise(function (resolve) {
- var el = document.querySelector(".submit.j-submit");
- if (el.style.display == "none") {
- resolve();
- }
- utils_1.UntrustedClick(el);
- var t = setInterval(function () {
- var el = document.querySelector(".submit.j-replay");
- if (el && el.style.display != "none") {
- clearInterval(t);
- resolve();
- }
- }, 1000);
- });
- };
- return CourseTopicTask;
- }(task_1.Task));
- exports.CourseTopicTask = CourseTopicTask;
- var DiscussTask = /** @class */ (function (_super) {
- __extends(DiscussTask, _super);
- function DiscussTask(resp) {
- var _this = _super.call(this) || this;
- _this.list = resp;
- return _this;
- }
- DiscussTask.prototype.isRepeat = function () {
- return document.querySelector("a.unfollowed") == undefined;
- };
- DiscussTask.prototype.Start = function () {
- var _this = this;
- if (!this.list && this.list.lenght <= 0) {
- application_1.Application.App.log.Info("没有查询到记录,跳过");
- this.callEvent("complete");
- return;
- }
- if (this.isRepeat()) {
- application_1.Application.App.log.Info("已经关注,跳过");
- this.callEvent("complete");
- return;
- }
- application_1.Application.App.log.Info("复读机开启,准备复读(回复当前本讨论)");
- return new Promise(function (resolve) {
- var num = 0;
- var timer = setInterval(function () {
- try {
- var rand = _this.list[utils_1.randNumber(0, _this.list.length - 1)];
- var el = document.querySelector("iframe[id*=ueditor_]");
- application_1.Application.GlobalContext.UE.instants["ueditorInstant" + el.id.substr(el.id.indexOf("_") + 1)].setContent(rand.content);
- }
- catch (e) {
- if (num < 5) {
- return;
- }
- application_1.Application.App.log.Error("发生了错误,准备跳过", e);
- }
- clearInterval(timer);
- _this.callEvent("complete");
- resolve();
- }, 1000);
- });
- };
- DiscussTask.prototype.Done = function () {
- return false;
- };
- DiscussTask.prototype.Type = function () {
- return "other";
- };
- DiscussTask.prototype.Submit = function () {
- if (this.isRepeat()) {
- return;
- }
- return new Promise(function (resolve) {
- application_1.Application.App.log.Info("准备提交");
- var el = document.querySelector(".u-btn-sm.u-btn-primary");
- if (!el) {
- return resolve();
- }
- utils_1.UntrustedClick(el);
- setTimeout(function () {
- resolve();
- }, 2000);
- });
- };
- return DiscussTask;
- }(task_1.Task));
- exports.DiscussTask = DiscussTask;
- /***/ }),
- /***/ "./src/mooc/mooc.ts":
- /*!**************************!*\
- !*** ./src/mooc/mooc.ts ***!
- \**************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.mooc = void 0;
- var application_1 = __webpack_require__(/*! @App/internal/application */ "./src/internal/application.ts");
- var mooc = /** @class */ (function () {
- function mooc(moocFactory) {
- // 防止taskComplete和reload冲突
- this.once = false;
- this.moocFactory = moocFactory;
- }
- mooc.prototype.start = function () {
- return __awaiter(this, void 0, void 0, function () {
- var state, mooc_1, e_1, isShow_1;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- _a.trys.push([0, 3, , 4]);
- state = document.readyState;
- application_1.Application.App.log.Debug("Start document state:", state);
- mooc_1 = this.moocFactory.CreateMooc();
- if (!(mooc_1 != null)) return [3 /*break*/, 2];
- return [4 /*yield*/, mooc_1.Init()];
- case 1:
- _a.sent();
- // MoocTaskSet接口判断,接管流程
- if (mooc_1.Next != undefined) {
- this.runMoocTask(mooc_1);
- }
- _a.label = 2;
- case 2: return [3 /*break*/, 4];
- case 3:
- e_1 = _a.sent();
- application_1.Application.App.log.Fatal("扩展发生了一个致命错误:", e_1);
- return [3 /*break*/, 4];
- case 4:
- //最小化警告
- if (top == self) {
- isShow_1 = false;
- document.addEventListener("visibilitychange", function () {
- if (document.hidden) {
- if (isShow_1) {
- return;
- }
- application_1.Application.App.log.Warn("请注意!最小化可能导致视频无法正常播放!允许切换窗口.");
- isShow_1 = true;
- }
- });
- }
- return [2 /*return*/];
- }
- });
- });
- };
- mooc.prototype.runMoocTask = function (moocTask) {
- var _this = this;
- moocTask.addEventListener("reload", function () {
- if (application_1.Application.App.config.auto) {
- _this.runTask(moocTask);
- }
- clearTimeout(_this.timer);
- });
- moocTask.addEventListener("complete", function () {
- application_1.Application.App.log.Warn("任务完成了");
- alert("任务完成了");
- });
- moocTask.addEventListener("taskComplete", function (index, task) {
- moocTask.SetTaskPointer(index + 1);
- if (!application_1.Application.App.config.auto) {
- return;
- }
- var interval = application_1.Application.App.config.interval;
- application_1.Application.App.log.Info(interval + "分钟后自动切换下一个任务点");
- _this.timer = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4 /*yield*/, task.Submit()];
- case 1:
- _a.sent();
- return [4 /*yield*/, this.runTask(moocTask)];
- case 2:
- _a.sent();
- return [2 /*return*/];
- }
- });
- }); }, interval * 60000);
- });
- moocTask.addEventListener("error", function (msg) {
- application_1.Application.App.log.Fatal(msg);
- alert(msg);
- });
- };
- mooc.prototype.runTask = function (moocTask) {
- return __awaiter(this, void 0, void 0, function () {
- var task;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (this.once) {
- return [2 /*return*/];
- }
- this.once = true;
- return [4 /*yield*/, moocTask.Next()];
- case 1:
- task = _a.sent();
- _a.label = 2;
- case 2:
- if (!(task != null)) return [3 /*break*/, 9];
- if (!task.Done()) return [3 /*break*/, 4];
- return [4 /*yield*/, moocTask.Next()];
- case 3:
- task = _a.sent();
- return [3 /*break*/, 2];
- case 4:
- if (!(application_1.Application.App.config.answer_ignore && task.Type() == "topic")) return [3 /*break*/, 6];
- return [4 /*yield*/, moocTask.Next()];
- case 5:
- task = _a.sent();
- return [3 /*break*/, 2];
- case 6:
- if (!application_1.Application.App.config.auto) return [3 /*break*/, 8];
- return [4 /*yield*/, task.Start()];
- case 7:
- _a.sent();
- _a.label = 8;
- case 8:
- this.nowTask = task;
- return [3 /*break*/, 9];
- case 9:
- this.once = false;
- return [2 /*return*/];
- }
- });
- });
- };
- return mooc;
- }());
- exports.mooc = mooc;
- /***/ }),
- /***/ "./src/tampermonkey/course163-pack.ts":
- /*!********************************************!*\
- !*** ./src/tampermonkey/course163-pack.ts ***!
- \********************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var config_1 = __webpack_require__(/*! @App/internal/utils/config */ "./src/internal/utils/config.ts");
- var log_1 = __webpack_require__(/*! @App/internal/utils/log */ "./src/internal/utils/log.ts");
- var application_1 = __webpack_require__(/*! @App/internal/application */ "./src/internal/application.ts");
- var mooc_1 = __webpack_require__(/*! @App/mooc/mooc */ "./src/mooc/mooc.ts");
- var platform_1 = __webpack_require__(/*! @App/mooc/course163/platform */ "./src/mooc/course163/platform.ts");
- var logger;
- if (top == self) {
- logger = new log_1.PageLog();
- }
- else {
- logger = new log_1.ConsoleLog();
- }
- application_1.Application.GlobalContext = window.unsafeWindow;
- var component = new Map().
- set("config", new config_1.ChromeConfigItems(config_1.NewFrontendGetConfig())).
- set("logger", logger);
- var app = new application_1.Application(application_1.Frontend, new mooc_1.mooc(new platform_1.Course163Platform()), component);
- app.run();
- /***/ }),
- /***/ "./src/views/common.ts":
- /*!*****************************!*\
- !*** ./src/views/common.ts ***!
- \*****************************/
- /*! no static exports found */
- /***/ (function(module, exports) {
- window.addEventListener("load", function () {
- var css = "\n@keyframes aniripple \n{\n 0%{\n width:0px;\n height:0px;\n opacity:0.4;\n }\n 100%{\n width:500px;\n height:500px;\n opacity:0;\n }\n} \n\n#cxtools {\n position: absolute;\n left: 250px;\n top: 2px;\n width: 210px;\n font-size: 0;\n}\n\n.cx-btn {\n outline: none;\n border: 0;\n background: #7d9d35;\n color: #fff;\n border-radius: 4px;\n padding: 2px 8px;\n cursor: pointer;\n font-size: 12px;\n margin-left: 4px;\n}\n\n.cx-btn:hover {\n box-shadow: 1px 1px 1px 1px #ccc;\n}\n\n.zhs-tools-btn {\n color: #fff;\n background: #ff9d34;\n padding: 4px;\n display: inline-block;\n height: 24px;\n font-size: 14px;\n line-height: 24px;\n margin:0;\n cursor:pointer;\n}\n.btn-ripple{\n position:absolute;\n background:#000;\n pointer-events:none;\n transform:translate(-50%,-50%);\n border-radius:50%;\n animation:aniripple 1s linear infinite;\n}\n\n.zhs-start-btn{\n background: #36ac36;\n}\n\n.zhs-start-btn:hover{\n background: #3b8d3b;\n}\n\n#zhs-ytbn {\n color: #fff;\n background: #e777ff;\n}\n\n#zhs-ytbn:hover {\n background: #e7b7f1;\n}\n\n.zhs-search-answer {\n border: 0;\n outline: none;\n padding: 4px;\n}\n\n.zhs-search-answer:hover {\n opacity: .85;\n}\n\n.mooc163-search{\n background-color: #60b900;\n display: block;\n margin: 0 auto;\n}\n\n.tools-logger-panel{\n width: 360px;\n height: auto;\n max-height: 260px;\n color:#000;\n position: fixed;\n margin: 0 auto;\n display: block;\n font-size: 14px;\n border-radius: 4px;\n width: 340px;\n text-align: center;\n overflow: hidden;\n left:60px;\n top: 40px;\n z-index: 100000;\n background: rgba(256, 256, 256, 0.3);\n box-shadow: 0px 0px 5px #bbb;\n}\n\n.head {\n width: 100%;\n height: 30px;\n padding: 4px;\n box-sizing: border-box;\n cursor: move;\n transition-property: opacity, background-color;\n transition: 200ms ease-in-out;\n}\n\n.head span{\n color:#000;\n float:left;\n font-weight: 550;\n}\n\n.status {\n color: #67C23A;\n font-weight: 600;\n}\n\n.tools-notice-content {\n width: 100%;\n height: 220px;\n border-top:0px;\n overflow-y: scroll;\n overflow-x: hidden;\n}\n\n.tools-notice-content .log {\n height: auto;\n width: auto;\n text-align: center;\n border: 1px solid #eee;\n overflow: hidden;\n}\n\n.tools-notice-content .log p {\n margin: 0;\n color: #aaa;\n font-size: 11px;\n font-weight: 500;\n font-family: Arial, Helvetica, sans-serif;\n line-height: 26px;\n}\n\n/* \u6EDA\u52A8\u69FD */\n::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n}\n\n::-webkit-scrollbar-track {\n border-radius: 3px;\n background: rgba(0, 0, 0, 0.06);\n -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.08);\n}\n\n/* \u6EDA\u52A8\u6761\u6ED1\u5757 */\n::-webkit-scrollbar-thumb {\n border-radius: 3px;\n background: rgba(0, 0, 0, 0.12);\n -webkit-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.2);\n}\n\n/* \u590D\u9009\u6846 */\n.switch {\n margin: 2px auto;\n display: inline-flex;\n align-items: center;\n width: auto;\n}\n.checkbox-input {\n display: none\n}\n.checkbox {\n -webkit-transition: background-color 0.3s;\n transition: background-color 0.3s;\n background-color: #fff;\n border: 1px solid #d7d7d7;\n border-radius: 50px;\n width: 16px;\n height: 16px;\n vertical-align:middle;\n margin: 0 5px;\n}\n.checkbox-input:checked+.checkbox {\n background-color: #409EFF;\n}\n.checkbox-input:checked+.checkbox:after {\n // content: \"\u221A\";\n display: inline-block;\n height: 100%;\n width: 100%;\n color: #fff;\n text-align: center;\n line-height: 16px;\n font-size: 12px;\n box-shadow: 0 0 4px #409EFF;\n}\n\n.tools-logger-panel:hover,\n.tools-logger-panel:focus-within {\n background: rgba(256, 256, 256, 0.7);\n}\n\n.tools-logger-panel .head:active {\n background-color: #E5E5E5;\n}\n\n.tools-logger-panel > .close {\n margin: 2px;\n}\n\n";
- var style = document.createElement("style");
- style.innerHTML = css;
- document.body.appendChild(style);
- });
- /***/ })
- /******/ });
- //# sourceMappingURL=tampermonkey-course163.js.map
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址