【工程】将你讨厌的洛谷用户头像换成奶龙动图

· · 科技·工程

[upd on 2025.4.2] 将代码放在了文章里并添加了几句教程。

[upd on 2025.4.3] 将图片源换成了国内可访问的地址。

[upd on 2025.4.3] 修复了会把所有 uid 是目标 uid 子串的用户都变成奶龙的 bug 。

油猴插件地址。

字面意思,该用户的所有头像都会变成奶龙喷火动图。

uid 在代码上半部,请自行修改。请仅修改数字部分。

目前只支持单个用户,如需多个用户可以使用油猴的添加脚本功能添加多个脚本并使用不同的 uid 。

奶龙动图使用了 [工程] 洛谷修改提交记录方框背景 - 沉石鱼惊旋 的资源并已征得原作者同意。

如果图片加载不出来可以参考沉石鱼惊旋文章中的教程。

下面是几张效果图。

都是动图,只是作者截图为静态。

感谢伟大的洛谷管理员 @chen_zhe 提供演示资源。

使用 @chen_zhe 为演示样例是因为洛谷讨论区只剩下少数几个人在首页显示,其中最多的便是 chen_zhe 的。

对于无法访问油猴的同学,代码在下面:

// ==UserScript==
// @name         将你讨厌的洛谷用户头像换成奶龙动图
// @namespace    https://www.luogu.com.cn/user/365751
// @version      0.1.1
// @description  将你讨厌的洛谷用户头像换成奶龙喷火动图
// @author       cooluo
// @match        https://www.luogu.com.cn/*
// @match        https://www.luogu.com.cn/*/*
// @match        https://www.luogu.com.cn/*/*/*
// @icon         https://cdn.luogu.com.cn/upload/usericon/3.png
// @license      MIT
// @grant        none
// @downloadURL https://update.greasyfork.org/scripts/531405/%E5%B0%86%E4%BD%A0%E8%AE%A8%E5%8E%8C%E7%9A%84%E6%B4%9B%E8%B0%B7%E7%94%A8%E6%88%B7%E5%A4%B4%E5%83%8F%E6%8D%A2%E6%88%90%E5%A5%B6%E9%BE%99%E5%8A%A8%E5%9B%BE.user.js
// @updateURL https://update.greasyfork.org/scripts/531405/%E5%B0%86%E4%BD%A0%E8%AE%A8%E5%8E%8C%E7%9A%84%E6%B4%9B%E8%B0%B7%E7%94%A8%E6%88%B7%E5%A4%B4%E5%83%8F%E6%8D%A2%E6%88%90%E5%A5%B6%E9%BE%99%E5%8A%A8%E5%9B%BE.meta.js
// ==/UserScript==

var uid = '/1.';

function replaceAvatar(className) {
    var avatar = document.getElementsByClassName(className);
    var len = avatar.length;
    for (var i = 0; i < len; i++) {
        if (!avatar[i].src) {
            if (avatar[i].innerHTML.includes(uid)) {
                var p = avatar[i].innerHTML.indexOf('src');
                var q = avatar[i].innerHTML.indexOf('png');
                var s = avatar[i].innerHTML.substring(0, p - 1);
                var t = avatar[i].innerHTML.substring(q + 3);
                avatar[i].innerHTML = s + 'src=\"https://jsdelivrcn.netlify.app/gh/chenyuxuan2009/luogu_submission_better/Judging.gif' + t;
            }
        }
        else if (avatar[i].src.includes(uid)) {
            avatar[i].src = 'https://jsdelivrcn.netlify.app/gh/chenyuxuan2009/luogu_submission_better/Judging.gif';
        }
    }
}

(function() {
    'use strict';

    // Your code here...
    setInterval(function () {
        replaceAvatar('am-comment-avatar');
        replaceAvatar('avatar-small');
        replaceAvatar('avatar');
    }, 10);
})();