洛谷题目难度显示 luogu dif render(PLUS版)

在个人空间显示每一道题的难度(PLUS版)

// ==UserScript==
// @name         洛谷题目难度显示 luogu dif render(PLUS版)
// @namespace    https://feilongproject.com/
// @version      1.0.1
// @description  在个人空间显示每一道题的难度(PLUS版)
// @author       飞龙project
// @match        https://www.luogu.com.cn/user/*
// @grant        none
// @require      https://code.jquery.com/jquery-1.12.4.min.js
// @license      GPL 3.0
// ==/UserScript==

var colors = [
    'rgb(191, 191, 191)',
    'rgb(254, 76, 97)',
    'rgb(243, 156, 17)',
    'rgb(255, 193, 22)',
    'rgb(82, 196, 26)',
    'rgb(52, 152, 219)',
    'rgb(157, 61, 207)',
    'rgb(14, 29, 105)'
];

var classList = [
    'diff0',
    'diff1',
    'diff2',
    'diff3',
    'diff4',
    'diff5',
    'diff6',
    'diff7',
]

var diffWord = [
    "[无] ",
    "[红] ",
    "[橙] ",
    "[黄] ",
    "[绿] ",
    "[蓝] ",
    "[紫] ",
    "[黑] "
]

$(window).load(function () {
    'use strict';
    var problems = [];

    var style = document.createElement("style");
    style.type = "text/css"
    var text = document.createTextNode(`
    .diff0:before{content: "无][";}
    .diff1:before{content: "红][";}
    .diff2:before{content: "橙][";}
    .diff3:before{content: "黄][";}
    .diff4:before{content: "绿][";}
    .diff5:before{content: "蓝][";}
    .diff6:before{content: "紫][";}
    .diff7:before{content: "黑][";}
    `)
    style.appendChild(text)
    var head = document.getElementsByTagName("head")[0]
    head.appendChild(style)


    for (var passed of window._feInjection.currentData.passedProblems) problems.push({ pid: passed.pid, dif: passed.difficulty, rendered: false });
    for (var tryed of window._feInjection.currentData.submittedProblems) problems.push({ pid: tryed.pid, dif: tryed.difficulty, rendered: false });
    console.log(window._feInjection)

    var button = document.createElement("div");
    button.style.backgroundColor = "#fff";
    button.style.boxShadow = "0 1px 3px rgba(26,26,26,.1)"
    button.style.padding = "1.3em"
    $(".side").append(button);

    var h3Text = document.createElement("h3");
    h3Text.style.fontWeight = "normal"
    h3Text.style.fontSize = "1.125em"
    h3Text.style.marginTop = "0"
    h3Text.style.marginBottom = ".5em"
    h3Text.style.fontFamily = "inherit"
    h3Text.style.lineHeight = "1.2"
    h3Text.innerText = "手动刷新"
    button.append(h3Text);

    var btn = document.createElement("button");
    btn.style = "border-color: #3085d6;border-width: 1px;background-color: #3085d6;border-radius: 5px;color: white;box-shadow: none;";
    btn.innerText = "刷新";
    button.append(btn);
    btn.onclick = () => {
        for (var i = 0; i < problems.length; i++)
            problems[i].rendered = false;
    }

    setInterval(() => {
        if (window.location.href.split("#").length == 2 && window.location.href.split("#")[1] == 'practice') {
            //console.log(problems)
            for (var i = 0; i < problems.length; i++) {
                if (!problems[i].rendered) {
                    var elements = document.querySelectorAll('a');
                    for (var el of elements) {
                        if (el.textContent == problems[i].pid) {
                            //console.log(el)
                            if (el.classList) {
                                //el.classList.remove("color-default");
                                try {
                                    el.className = el.className.replace('color-default', `${classList[problems[i].dif]}`);
                                } catch {

                                }

                            }
                            problems[i].rendered = true;
                            el.style.color = colors[problems[i].dif];
                            break;
                        }
                    }
                }
            }
        } else {
            for (var j = 0; j < problems.length; j++) {
                problems[j].rendered = false;
            }
        }
    }, 1000);

    for (let i = 0; i < $(".difficulty-tags .row .lfe-caption").length; i++) {
        var nowText = $(`.difficulty-tags .row:eq(${i}) .lfe-caption`).text()
        $(`.difficulty-tags .row:eq(${i}) .lfe-caption`).text(`${diffWord[i]}${nowText}`)
    }

});

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址