[分享] 洛谷提交记录方框背景优化拓展(附赠猫猫虫主题)

· · 科技·工程

声明

本插件原作者为 沉石鱼惊旋,请多多支持原作者喵~

效果展示

根据测试点随机

根据评测结果随机

以上所有测试点效果均在 https://www.luogu.com.cn/record/72597888 处查看。

安装

插件 Link : https://www.luogu.com.cn/article/xscqjzbk

请支持原作者喵~

安装后把代码改成下面的就可以了。

// ==UserScript==
// @name         洛谷提交记录显示优化
// @namespace    http://tampermonkey.net/
// @version      0.7
// @description  修改提交记录背景
// @author       沉石鱼惊旋
// @match        *://www.luogu.com.cn/record/*
// @run-at       document-end
// @license      MIT
// ==/UserScript==

// 原作者:沉石鱼惊旋
// 原作者帖子:https://www.luogu.com.cn/article/xscqjzbk

// Modified By Kendieer
// Modified Version : 1.1
// 如果想要收到原作者的持续更新就把下面这两行放在上方
// @downloadURL https://update.greasyfork.org/scripts/530997/%E6%B4%9B%E8%B0%B7%E6%8F%90%E4%BA%A4%E8%AE%B0%E5%BD%95%E6%98%BE%E7%A4%BA%E4%BC%98%E5%8C%96.user.js
// @updateURL https://update.greasyfork.org/scripts/530997/%E6%B4%9B%E8%B0%B7%E6%8F%90%E4%BA%A4%E8%AE%B0%E5%BD%95%E6%98%BE%E7%A4%BA%E4%BC%98%E5%8C%96.meta.js

// =========================================================================================

let Mode = 0 // 0:每个测试点随机roll对应测试点的图片;  1:每种状态随机一张对应测试点的图片    2:完全打乱所有图片
let background = true// 是否在测试点背景插入图片
let cap = 0.4// 透明度
//      链接
let ac_links = [
    'https://img.picui.cn/free/2025/03/27/67e52cebed059.gif',
    'https://img.picui.cn/free/2025/03/27/67e53b8bb170a.gif',
    'https://img.picui.cn/free/2025/03/27/67e54271604f0.gif',
    'https://img.picui.cn/free/2025/03/27/67e555196172e.gif',
    'https://img.picui.cn/free/2025/03/27/67e563429e9ab.gif',
    'https://img.picui.cn/free/2025/03/27/67e56a26e1616.gif',
    'https://img.picui.cn/free/2025/03/27/67e56e4d95d5f.gif',
    'https://img.picui.cn/free/2025/03/27/67e570b4d2380.gif',
    'https://img.picui.cn/free/2025/03/27/67e5723af2148.gif',
    'https://img.picui.cn/free/2025/03/27/67e5723aefe77.gif'
]
let wa_links = [
    'https://img.picui.cn/free/2025/03/27/67e531c9d8504.jpg',
    'https://img.picui.cn/free/2025/03/27/67e53b86ba0b9.gif',
    'https://img.picui.cn/free/2025/03/27/67e55350e3363.gif',
    'https://img.picui.cn/free/2025/03/27/67e554b187083.jpg',
    'https://img.picui.cn/free/2025/03/27/67e5635811a7e.gif',
    'https://img.picui.cn/free/2025/03/27/67e56a50ba6d8.gif',
    'https://img.picui.cn/free/2025/03/27/67e56a50d5501.gif',
    'https://img.picui.cn/free/2025/03/27/67e57155d02e6.gif',
    'https://img.picui.cn/free/2025/03/27/67e57227004fe.gif',
    'https://img.picui.cn/free/2025/03/27/67e5732db0c9f.gif'
]
let tle_links = [
    'https://img.picui.cn/free/2025/03/27/67e52e5c67556.gif',
    'https://img.picui.cn/free/2025/03/27/67e53b84ef3ce.gif',
    'https://img.picui.cn/free/2025/03/27/67e553ce8b9ac.jpg',
    'https://img.picui.cn/free/2025/03/27/67e52fb31b149.gif',
    'https://img.picui.cn/free/2025/03/27/67e55a82e675f.gif',
    'https://img.picui.cn/free/2025/03/27/67e5637530102.gif',
    'https://img.picui.cn/free/2025/03/27/67e56a7658392.gif',
    'https://img.picui.cn/free/2025/03/27/67e56a7662970.gif'
]
let mle_links = [
    'https://img.picui.cn/free/2025/03/27/67e5310159ff0.gif',
    'https://img.picui.cn/free/2025/03/27/67e5418fab245.jpg',
    'https://img.picui.cn/free/2025/03/27/67e5530521844.gif',
    'https://img.picui.cn/free/2025/03/27/67e55414c9faf.gif',
    'https://img.picui.cn/free/2025/03/27/67e563ab35e7f.gif',
    'https://img.picui.cn/free/2025/03/27/67e56a9501b01.gif',
    'https://img.picui.cn/free/2025/03/27/67e57150be707.gif'
]
let re_links = [
    'https://img.picui.cn/free/2025/03/27/67e52d70baf01.gif',
    'https://img.picui.cn/free/2025/03/27/67e53b86a65a7.gif',
    'https://img.picui.cn/free/2025/03/27/67e52fb31b149.gif',
    'https://img.picui.cn/free/2025/03/27/67e55dc23ad09.gif',
    'https://img.picui.cn/free/2025/03/27/67e530226e2c1.gif',
    'https://img.picui.cn/free/2025/03/27/67e563cda8d9b.gif',
    'https://img.picui.cn/free/2025/03/27/67e56ab50f85e.gif',
    'https://img.picui.cn/free/2025/03/27/67e56e52ac2e6.gif'
]
let ole_links = [
    'https://img.picui.cn/free/2025/03/27/67e530f7e9bf4.gif',
    'https://img.picui.cn/free/2025/03/27/67e53d063b470.gif',
    'https://img.picui.cn/free/2025/03/27/67e563ead764d.gif',
    'https://img.picui.cn/free/2025/03/27/67e56ad174729.gif',
    'https://img.picui.cn/free/2025/03/27/67e56ad184253.gif'
]
let uke_links = [
    'https://img.picui.cn/free/2025/03/27/67e52fb33a99d.gif',
    'https://img.picui.cn/free/2025/03/27/67e53b87a189a.gif',
    'https://img.picui.cn/free/2025/03/27/67e5532b7ff77.gif',
    'https://img.picui.cn/free/2025/03/27/67e56404a460f.jpg',
    'https://img.picui.cn/free/2025/03/27/67e56b053b949.gif'
]
let jud_links = [
    'https://img.picui.cn/free/2025/03/27/67e530fdbe8ce.gif',
    'https://img.picui.cn/free/2025/03/27/67e53b8c4506c.jpg',
    'https://img.picui.cn/free/2025/03/27/67e542362313c.jpg',
    'https://img.picui.cn/free/2025/03/27/67e533b0d3e8b.gif',
    'https://img.picui.cn/free/2025/03/27/67e56b1dd3452.jpg'
]

let bg_links = [
    'https://img.picui.cn/free/2025/03/28/67e644c63e451.jpg'
]

let ce_bg_links = [
    'https://img.picui.cn/free/2025/03/27/67e52d70baf01.gif',
    'https://img.picui.cn/free/2025/03/27/67e53b86a65a7.gif',
    'https://img.picui.cn/free/2025/03/27/67e52fb31b149.gif',
    'https://img.picui.cn/free/2025/03/27/67e55dc23ad09.gif',
    'https://img.picui.cn/free/2025/03/27/67e530226e2c1.gif',
    'https://img.picui.cn/free/2025/03/27/67e563cda8d9b.gif',
    'https://img.picui.cn/free/2025/03/27/67e56ab50f85e.gif',
    'https://img.picui.cn/free/2025/03/27/67e56e52ac2e6.gif'
]

// 各种评测结果的背景颜色

var Judging_color = [20, 85, 143, 0.3]
var AC_Color = [82, 196, 26, 0.3]
var WA_Color = [231, 76, 60, 0.3]
var TLE_Color = [5, 34, 66, 0.3]
var MLE_Color = [5, 34, 66, 0.3]
var RE_Color = [157, 61, 207, 0.3]
var OLE_Color = [5, 34, 66, 0.3]
var UKE_Color = [14, 29, 105, 0.3]

// =========================================================================================
function getRandom(max) {
  return Math.floor(Math.random() * max);
}

let indexes
let aclen = ac_links.length
let walen = wa_links.length
let tlelen = tle_links.length
let mlelen = mle_links.length
let relen = re_links.length
let olelen = ole_links.length
let ukelen = uke_links.length
let judlen = jud_links.length
let bglen = bg_links.length
let cebglen = ce_bg_links.length

let ac = getRandom(aclen)
let wa = getRandom(walen)
let tle = getRandom(tlelen)
let mle = getRandom(mlelen)
let re = getRandom(relen)
let ole = getRandom(olelen)
let uke = getRandom(ukelen)
let jud = getRandom(judlen)
let bgd = getRandom(bglen)
let cebgd = getRandom(cebglen)

let all = [...ac_links,...wa_links,...tle_links,...mle_links,...re_links,...ole_links,...uke_links,...jud_links,...ce_bg_links]
let alllen = all.length

function init_index(){
    let tc = document.getElementsByClassName('test-case');
    let len = tc.length;
    indexes = Array(len)
    for (let i = 0; i < len; i += 1) {
        indexes[i] = getRandom(1000)
    }
    loaded_size = len
    loaded = true
}

var loaded = false,loaded_size = 0

function main() {
    let tcw = document.querySelector('.main div.card.padding-default')
    let ce = document.querySelector('.compile-info');
    let tc = document.getElementsByClassName('test-case');
    let len = tc.length;
    if (loaded_size != len){
        loaded = false
        return
    }
    for (let i = 0; i < len; i += 1) {
        if (Mode === 0){
            if (tc[i].getElementsByClassName("spinner").length) {
                tc[i].style = `background: linear-gradient(rgba(${Judging_color}), rgba(${Judging_color})), url('${jud_links[indexes[i]%judlen]}'); background-size: cover;`;
                continue;
            }
            let status = tc[i].getElementsByClassName('status')[0].innerHTML.substring(0, 2);
            if (status === "AC") {
                tc[i].style = `background: linear-gradient(rgba(${AC_Color}), rgba(${AC_Color})), url('${ac_links[indexes[i]%aclen]}'); background-size: cover;`;
            } else if (status === "WA") {
                tc[i].style = `background: linear-gradient(rgba(${WA_Color}), rgba(${WA_Color})), url('${wa_links[indexes[i]%walen]}'); background-size: cover;`;
            } else if (status === "TL") {
                tc[i].style = `background: linear-gradient(rgba(${TLE_Color}), rgba(${TLE_Color})), url('${tle_links[indexes[i]%tlelen]}'); background-size: cover;`;
            } else if (status === "ML") {
                tc[i].style = `background: linear-gradient(rgba(${MLE_Color}), rgba(${MLE_Color})), url('${mle_links[indexes[i]%mlelen]}'); background-size: cover;`;
            } else if (status === "RE") {
                tc[i].style = `background: linear-gradient(rgba(${RE_Color}), rgba(${RE_Color})), url('${re_links[indexes[i]%relen]}'); background-size: cover;`;
            } else if (status === "OL") {
                tc[i].style = `background: linear-gradient(rgba(${OLE_Color}), rgba(${OLE_Color})), url('${ole_links[indexes[i]%olelen]}'); background-size: cover;`;
            } else if (status === "UK") {
                tc[i].style = `background: linear-gradient(rgba(${UKE_Color}), rgba(${UKE_Color})), url('${uke_links[indexes[i]%ukelen]}'); background-size: cover;`;
            }
        } else if (Mode === 1) {
            if (tc[i].getElementsByClassName("spinner").length) {
                tc[i].style = `background: linear-gradient(rgba(${Judging_color}), rgba(${Judging_color})), url('${jud_links[jud]}'); background-size: cover;`;
                continue;
            }
            let status = tc[i].getElementsByClassName('status')[0].innerHTML.substring(0, 2);
            if (status === "AC") {
                tc[i].style = `background: linear-gradient(rgba(${AC_Color}), rgba(${AC_Color})), url('${ac_links[ac]}'); background-size: cover;`;
            } else if (status === "WA") {
                tc[i].style = `background: linear-gradient(rgba(${WA_Color}), rgba(${WA_Color})), url('${wa_links[wa]}'); background-size: cover;`;
            } else if (status === "TL") {
                tc[i].style = `background: linear-gradient(rgba(${TLE_Color}), rgba(${TLE_Color})), url('${tle_links[tle]}'); background-size: cover;`;
            } else if (status === "ML") {
                tc[i].style = `background: linear-gradient(rgba(${MLE_Color}), rgba(${MLE_Color})), url('${mle_links[mle]}'); background-size: cover;`;
            } else if (status === "RE") {
                tc[i].style = `background: linear-gradient(rgba(${RE_Color}), rgba(${RE_Color})), url('${re_links[re]}'); background-size: cover;`;
            } else if (status === "OL") {
                tc[i].style = `background: linear-gradient(rgba(${OLE_Color}), rgba(${OLE_Color})), url('${ole_links[ole]}'); background-size: cover;`;
            } else if (status === "UK") {
                tc[i].style = `background: linear-gradient(rgba(${UKE_Color}), rgba(${UKE_Color})), url('${uke_links[uke]}'); background-size: cover;`;
            }
        } else {
            if (tc[i].getElementsByClassName("spinner").length) {
                tc[i].style = `background: linear-gradient(rgba(${Judging_color}), rgba(${Judging_color})), url('${all[indexes[i]%alllen]}'); background-size: cover;`;
                continue;
            }
            let status = tc[i].getElementsByClassName('status')[0].innerHTML.substring(0, 2);
            if (status === "AC") {
                tc[i].style = `background: linear-gradient(rgba(${AC_Color}), rgba(${AC_Color})), url('${all[indexes[i]%alllen]}'); background-size: cover;`;
            } else if (status === "WA") {
                tc[i].style = `background: linear-gradient(rgba(${WA_Color}), rgba(${WA_Color})), url('${all[indexes[i]%alllen]}'); background-size: cover;`;
            } else if (status === "TL") {
                tc[i].style = `background: linear-gradient(rgba(${TLE_Color}), rgba(${TLE_Color})), url('${all[indexes[i]%alllen]}'); background-size: cover;`;
            } else if (status === "ML") {
                tc[i].style = `background: linear-gradient(rgba(${MLE_Color}), rgba(${MLE_Color})), url('${all[indexes[i]%alllen]}'); background-size: cover;`;
            } else if (status === "RE") {
                tc[i].style = `background: linear-gradient(rgba(${RE_Color}), rgba(${RE_Color})), url('${all[indexes[i]%alllen]}'); background-size: cover;`;
            } else if (status === "OL") {
                tc[i].style = `background: linear-gradient(rgba(${OLE_Color}), rgba(${OLE_Color})), url('${all[indexes[i]%alllen]}'); background-size: cover;`;
            } else if (status === "UK") {
                tc[i].style = `background: linear-gradient(rgba(${UKE_Color}), rgba(${UKE_Color})), url('${all[indexes[i]%alllen]}'); background-size: cover;`;
            }
        }
    }
    if (background){
        if (ce === null){
            if (bglen > 0 ){
                tcw.style = `background: url('${bg_links[bgd%bglen]}'); background-size: 100% 100%;opacity: 0.65;min-height:600px`;
            }
        } else {
            if (cebglen > 0){
                ce.style = `background: url('${ce_bg_links[cebgd%cebglen]}'); background-size: cover;opacity: 0.65;min-height:800px`;
            }
        }
    }
};
(function () {
    setInterval(function () {
        if (!loaded)init_index();
        else main();
    }, 20);
})();