Greasy Fork镜像 还支持 简体中文。

VoidVerified

Display a verified sign next to user's name in AniList.

目前為 2023-09-17 提交的版本,檢視 最新版本

// ==UserScript==
// @name         VoidVerified
// @namespace    http://tampermonkey.net/
// @version      0.1.1
// @description  Display a verified sign next to user's name in AniList.
// @author       voidnyan
// @match        https://anilist.co/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    const observer = new MutationObserver(observeMutations);
    observer.observe(document.body, {childList: true, subtree: true});

    const usernameSelector = ["a.name"];

    const verified = {
        color: undefined,
        sign: "✔",
        title: "Verified",
        disableOnProfile: false,
    };

    const verifiedUsers = [
        "voidnyan"
    ];

    console.log("VoidVerified loaded.");

    function observeMutations(mutations) {
        for (const mutation of mutations) {
            if (mutation.addedNodes.length > 0) {
                mutation.addedNodes.forEach(handleVerified);
            }
        }
    }

    function handleVerified(node){
        if (!(node instanceof HTMLElement)) {
            return;
        }

        switch (true){
            case node.matches("div.reply"):
                handleReply(node);
                break;
            case node.matches("div.activity-anime_list"):
            case node.matches("div.activity-manga_list"):
                handleListActivity(node);
                break;
            case node.matches("div.activity-text"):
            case node.matches("div.activity-message"):
                handleTextActivity(node);
                break;
            case node.matches("div.user"):
                handleProfile(node);
        }
    }

    function handleReply(node) {
        const username = node.querySelector(usernameSelector);
        addVerifiedMarkToReply(username);
    }

    function handleListActivity(node) {
        const isProfileActivity = node.querySelector(".small") !== null;

        if (isProfileActivity) {
            return;
        }

        const username = node.querySelector(usernameSelector);
        addVerifiedMark(username);
    }

    function handleTextActivity(node) {
        const username = node.querySelector(usernameSelector);
        addVerifiedMark(username);
    }

    function handleProfile(node){
        if (verified.disableOnProfile){
            return;
        }
        const username = node.querySelector("h1.name");
        addVerifiedMarkToProfile(username);
    }

    function addVerifiedMark(username) {
        if (verifiedUsers.includes(username.innerHTML.trim())) {
            const span = createMarkElement(username);
            span.style.width = "min-content";

            username.after(span);
        }
    }

    function addVerifiedMarkToReply(username) {
        if (verifiedUsers.includes(username.innerHTML.trim())) {
            const span = createMarkElement(username);

            span.style.display = "inline-block";
            span.style.verticalAlign = "top";
            span.style.lineHeight = "25px";
            span.style.height = "25px";

            username.after(span);
        }
    }

    function addVerifiedMarkToProfile(username) {
        if (verifiedUsers.includes(username.innerHTML.trim())) {
            const span = document.createElement("span");
            span.innerHTML = verified.sign;
            span.style.color = verified.color;
            span.style.marginLeft = "6px";

            username.after(span);
        }
    }

    function getLinkColor(username){
        var linkColor = getComputedStyle(username).getPropertyValue("--color-blue");
        return `rgb(${linkColor})`;
    }

    function createMarkElement(username){
        const span = document.createElement("span");

        span.style.color = verified.color ?? getLinkColor(username);
        span.style.marginLeft = "6px";
        span.innerHTML = verified.sign;
        span.title = verified.title;

        return span;
    }
})();

QingJ © 2025

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