您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
USTC 自动评价 tqm.ustc.edu.cn
当前为
// ==UserScript== // @name Auto grading // @namespace http://tampermonkey.net/ // @version 0.2.1 // @description USTC 自动评价 tqm.ustc.edu.cn // @author PRO_2684 // @match https://tqm.ustc.edu.cn/index.html* // @icon https://tqm.ustc.edu.cn/favicon.ico // @grant none // @license unlicense // ==/UserScript== (function() { 'use strict'; let standard_answers = { '教学内容': ['非常同意'], '教学资源': ['非常满意', '非常同意'], '教材单列': ['非常满意'], '课程难度': ['适合'], '教学态度': ['非常同意'], '教学水平': ['非常同意'], '教学手段': ['非常同意'], '教学方法': ['非常同意'], '师生互动': ['非常同意'], '学习投入': ['3-4小时'], '知识掌握': ['非常同意'], '能力提升': ['非常同意'], '兴趣培养': ['非常同意'], '推荐度': ['会'], '整体评价': ['非常好'], '课程准备': ['非常同意'], '实验报告': ['非常同意'], '教学表达': ['非常同意'], '课程安排': ['非常同意'], '课程考核': ['非常同意'], '纪律约束': ['非常同意'], '教师示范': ['非常同意'], '课程氛围': ['非常同意'], '素养提升': ['非常同意'], '个人发展': ['非常同意'], '1.该助教是否随堂听课?': ['全部'], '2.该助教批改作业是否认真?': ['非常认真'], '3.该助教习题课/答疑课准备是否充分?': ['非常充分'], '4.该助教对课程知识的掌握是否扎实?': ['非常扎实'], '5.该助教习题课/答疑课互动中表达是否清晰?': ['非常清晰'], '6.该助教的综合表现': ['优秀'] }; let menu_root; function append_link() { let auto_grade = document.createElement('a'); auto_grade.innerText = "自动评价"; auto_grade.onclick = grade; menu_root.appendChild(auto_grade); } function grade() { let questions = document.querySelectorAll("[class|='index_subject']"); questions.forEach((question) => { let required = Boolean(question.querySelector('[class|="index_necessary"]')); if (!required) return; let tmp = question.querySelector("[class|='index_title']").querySelectorAll('p'); let title = tmp[tmp.length - 1].innerText; let standard_answer = standard_answers[title]; console.log(`[Auto grading] ${title}: ${standard_answer}`); if (standard_answer) { let options = question.querySelectorAll('[style="width: 100%;"]'); options.forEach((option) => { let is_standard_answer = (standard_answer.indexOf(option.innerText) >= 0); if (is_standard_answer) { option.firstChild.click(); } }); } }); } const root_node = document.getElementById('root'); const config = { attributes: false, childList: true, subtree: true }; const callback = function(mutations, observer) { menu_root = root_node.querySelector('.ant-menu-root'); if (menu_root) { append_link(); observer.disconnect(); } } const observer = new MutationObserver(callback); observer.observe(root_node, config); })();