Greasy Fork

Greasy Fork is available in English.

恢复希悦预测成绩及排名显示

Bring Chalk class ranking and predicated grades back

当前为 2024-01-04 提交的版本,查看 最新版本

// ==UserScript==
// @name         恢复希悦预测成绩及排名显示
// @license MIT
// @namespace    http://tampermonkey.net/
// @version      2024-01-04
// @description  Bring Chalk class ranking and predicated grades back
// @author       You
// @match        https://chalk-c3.seiue.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=seiue.com
// @grant        none
// ==/UserScript==

function addXMLRequestCallback(callback){
    var oldSend, i;
    if( XMLHttpRequest.callbacks ) {
        XMLHttpRequest.callbacks.push( callback );
    } else {
        XMLHttpRequest.callbacks = [callback];
        oldSend = XMLHttpRequest.prototype.send;
        XMLHttpRequest.prototype.send = function(){
            for( i = 0; i < XMLHttpRequest.callbacks.length; i++ ) {
                XMLHttpRequest.callbacks[i]( this );
            }
            oldSend.apply(this, arguments);
        }
    }
}

addXMLRequestCallback( function( xhr ) {
        xhr.addEventListener("load", function(){
        if ( xhr.readyState == 4 && xhr.status == 200 && xhr.responseURL.startsWith('https://api.seiue.com/vnas/klass/personal/class') ) {
            const response = JSON.parse(xhr.responseText);
            const grade = response.grade;
            const gainedRank = grade.gained_rank;
            const gainedBase = grade.gained_rank_base;
            const rate = grade.gained_score_rate;
            console.log(gainedRank, gainedBase, rate)
            updateDOM(gainedRank, gainedBase, rate);
        }
    });

});


function updateDOM(gainedRank, gainedBase, rate) {
    const parent = document.getElementsByClassName('sc-ddSVtv hwAXdD')[0];
    if (!parent) {
        setTimeout(() => {
            updateDOM(gainedRank, gainedBase, rate);
        }, 1000);
    }
    const blueBox = document.createElement('div');
    blueBox.setAttribute('class', 'sc-dIGTxO gxUoxr sc-biqURg kqFCNC')

    const rank = document.createElement('div2');
    rank.setAttribute('class', 'sc-hYAvag iSuscE sc-ieyPFj fRXfRt')
    rank.innerHTML = `${gainedRank} / ${gainedBase}`

    const rankText = document.createElement('div')
    rankText.setAttribute('class','sc-hYAvag iSuscE sc-kEOLkp crIvFK')
    rankText.innerHTML = '排名'

    blueBox.appendChild(rank)
    blueBox.appendChild(rankText)

    const blueBox2 = document.createElement('div');
    blueBox2.setAttribute('class', 'sc-dIGTxO gxUoxr sc-biqURg kqFCNC')

    const rateBox = document.createElement('div');
    rateBox.setAttribute('class', 'sc-hYAvag iSuscE sc-ieyPFj fRXfRt')
    rateBox.innerHTML = `${rate * 100}`
    const rateText = document.createElement('div')
    rateText.setAttribute('class','sc-hYAvag iSuscE sc-kEOLkp crIvFK')
    rateText.innerHTML = '预测得分'

    blueBox2.appendChild(rateBox)
    blueBox2.appendChild(rateText)

    parent.appendChild(blueBox);
    parent.appendChild(blueBox2);
}