Emojigu

为提交记录增添 Emoji 表情

// ==UserScript==
// @name         Emojigu
// @namespace    https://d0j1a1701.cc/
// @version      0.1.0
// @description  为提交记录增添 Emoji 表情
// @author       d0j1a_1701
// @match        https://*.luogu.com.cn/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=luogu.com.cn
// @grant        none
// @run-at       document-end
// @license      MIT
// ==/UserScript==

function addEmoji(){
    let flag = false;
    // 遍历每个元素并修改其 innerText
    document.querySelectorAll(".test-case-wrap > .wrapper > .test-case > .content > .status").forEach(element => {
        const status = element.innerText;
        if (status === "AC") {
            element.innerText += " 😘";
        } else if (status === "WA") {
            element.innerText += " 🤔";
        } else if (status === "TLE") {
            element.innerText += " 🐌";
        } else if (status === "MLE") {
            element.innerText += " 😨";
        } else if (status === "RE") {
            element.innerText += " 🤯";
        } else if (status === "OLE") {
            element.innerText += " 🤬";
        } else if (status === "UKE") {
            element.innerText += " 😅";
        };
        flag = true;
    });

    // 遍历每个元素并修改其 innerText
    document.querySelectorAll("span[data-v-541237e4][data-v-8b7f80ba]").forEach(element => {
        if (element.children.length > 0) return;
        const status = element.innerText;
        if (status.includes("Accepted")) {
            element.innerText += " 😘";
        } else if (status.includes("Unaccepted")) {
            element.innerText += " 🤔";
        } else if (status.includes("Compile Error")) {
            element.innerText += " 🤡";
        } else if (status.includes("Unknown Error")) {
            element.innerText += " 😅";
        } else if (status.includes("Waiting")) {
            element.innerText += " 🙄";
        } else if (status.includes("Judging")) {
            element.innerText += " ⚡";
        } else if (!isNaN(status)) { // 判断是否为数字
            const number = parseFloat(status);
            if (number === 0) {
                element.innerText += " 🤡";
            } else if (number > 0 && number <= 30) {
                element.innerText += " 🤣";
            } else if (number > 30 && number <= 50) {
                element.innerText += " 🧐";
            } else if (number > 50 && number <= 80) {
                element.innerText += " 😯";
            } else if (number > 80 && number < 100) {
                element.innerText += " 😡";
            } else if (number === 100) {
                element.innerText += " 😉";
            } else if (number > 100) {
                element.innerText += " 🤩";
            }
        }
        flag = true;
    });
    /*
    document.querySelectorAll(".tag.status-name").forEach(element => {
        const status = element.innerText;
        if (status.includes("Accepted")) {
            element.innerText += " 😘";
        } else if (status.includes("Unaccepted")) {
            element.innerText += " 🤔";
        } else if (status.includes("Compile Error")) {
            element.innerText += " 🤡";
        } else if (status.includes("Unknown Error")) {
            element.innerText += " 😅";
        } else if (status.includes("Waiting")) {
            element.innerText += " 🙄";
        } else if (status.includes("Judging")) {
            element.innerText += " ⚡";
        }
        flag = true;
    });
    */
    return flag;
};

function gmMain () {
    let i = setInterval(function(){
          if(addEmoji()) clearInterval(i);
      },100);
}

var fireOnHashChangesToo    = false;
var pageURLCheckTimer       = setInterval (
    function () {
        if (this.lastPathStr  !== location.pathname
            || (fireOnHashChangesToo && this.lastQueryStr !== location.search)
            || (fireOnHashChangesToo && this.lastHashStr !== location.hash)) {
            this.lastPathStr  = location.pathname;
            this.lastQueryStr = location.search;
            this.lastHashStr  = location.hash;
            gmMain ();
        }
    }
    , 100
);