您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Script for calculating courses related stuff
当前为
// ==UserScript== // @name UET-Graduate-Course-List // @namespace https://github.com/duongoku/ // @version 1.3 // @description Script for calculating courses related stuff // @author duongoku // @license GPL-3.0-or-later // @match https://daotao.uet.vnu.edu.vn/* // @icon https://www.google.com/s2/favicons?sz=64&domain=uet.vnu.edu.vn // ==/UserScript== function get_log_element() { var log_element = document.getElementById("console-log"); if (log_element == null) { log_element = document.createElement("span"); log_element.style = "color: white; display: block; font-size: 0.75rem;"; log_element.id = "console-log"; } return log_element; } function clear_log() { var log_element = get_log_element(); log_element.innerHTML = ""; } function log(log_string) { var log_element = get_log_element(); log_element.innerHTML += `${log_string}<br>`; } function parseScore(score) { score = parseFloat(String(score)); if (score >= 9) { return `A+`; } else if (score >= 8.5) { return `A`; } else if (score >= 8) { return `B+`; } else if (score >= 7) { return `B`; } else if (score >= 6.5) { return `C+`; } else if (score >= 5.5) { return `C`; } else if (score >= 5) { return `D+`; } else if (score >= 4) { return `D`; } return "F"; } function run() { if ( !window.location .toString() .startsWith(`https://daotao.uet.vnu.edu.vn/graduates/`) ) { return; } if ( document .querySelector(".text-muted") .innerText.toString() .trim() .toLowerCase() != `các học phần sinh viên đã tích lũy trong ctđt đang xét` ) { return; } document.querySelector(`.container-fluid`).appendChild(get_log_element()); clear_log(); var excluded_courses = [ `MAT1101`, `ELT2029`, `INT3102`, `INT3103`, `BSA2002`, ]; var courses = Array.from(document.querySelector("tbody").children); var total_credits = courses.reduce( (acc, cur) => acc + parseFloat(cur.children[4].innerText), 0 ); var cpa = courses.reduce( (acc, cur) => acc + parseFloat(cur.children[5].innerText) * parseFloat(cur.children[4].innerText), 0 ); cpa = cpa / total_credits; cpa = Math.round(cpa * 100) / 100; var optional_courses = courses.filter( (x) => x.children[3].innerText.trim().toLowerCase() == `tự chọn` ); optional_courses = optional_courses.filter( (x) => !excluded_courses.includes( x.children[1].innerText.trim().toUpperCase() ) ); log(`Total accumulated credits: ${total_credits}`); log(`CPA: ${cpa}`); log(`Optional course count: ${optional_courses.length}`); log( `Total optional courses credit: ${optional_courses.reduce( (acc, cur) => acc + parseFloat(cur.children[4].innerText), 0 )}/30 credits needed` ); log(`Optional course list:`); optional_courses = optional_courses.sort( (x, y) => parseFloat(x.children[5].innerText) - parseFloat(y.children[5].innerText) ); optional_courses.forEach((x) => { log( `Score: ${x.children[5].innerText}(${parseScore( x.children[5].innerText )}) | Course ${x.children[1].innerText}: ${ x.children[2].innerText } | ${x.children[4].innerText} credits` ); }); } // Rerun every 1.5 seconds before starting the script setInterval(run, 1500);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址