Bilibili 账号已注销修正

修正Bilibili 账户已注销的主页链接,修改为 https://www.bilibili.com/list/$UID

// ==UserScript==
// @name         Bilibili 账号已注销修正
// @name:zh-CN   Bilibili 账号已注销修正
// @namespace    http://tampermonkey.net/
// @version      1.1.3
// @license      MIT
// @description  修正Bilibili 账户已注销的主页链接,修改为 https://www.bilibili.com/list/$UID
// @description:zh-CN  修正Bilibili 账户已注销的主页链接,修改为 https://www.bilibili.com/list/$UID
// @author       Kaesinol
// @match        https://*.bilibili.com/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

// https://github.com/the1812/Bilibili-Evolved/discussions/4804#discussioncomment-10513931
(function () {
    'use strict';
    function processLinks() {
        document.querySelectorAll('div.bili-video-card__subtitle a').forEach(a => {
            handleElement(a)
        });
    }
    function handleElement(a, type = "normal") {
        let text = null;
        if (location.href.includes('space.bilibili.com')) {
            text = a.textContent.split(" ");
        } else {
            text = a.text;
        }
        if (text.includes("账号已注销")) {
            const match = a.href.match(/\/(\d+)\??/);
            if (match && type == "normal") {
                a.href = `https://www.bilibili.com/list/${match[1]}`;
                a.style.textDecoration = "line-through";
            } else {
                a.addEventListener('click', function (event) {
                    event.preventDefault(); // 阻止默认跳转行为
                    window.open(`https://www.bilibili.com/list/${match[1]}`, '_blank');
                });
            }
        }
    }
    function processCommentRenderers(elements) {
        elements.forEach(renderer => {
            handleElement(renderer.shadowRoot.querySelector('bili-comment-renderer').shadowRoot.querySelector('bili-comment-user-info').shadowRoot.querySelector('#user-name a'))
        });
    }

    function processComments() {
        const startElement = document.querySelector('bili-comments');
        if (startElement && startElement.shadowRoot) {
            const allElements = startElement.shadowRoot.querySelectorAll('bili-comment-thread-renderer');
            processCommentRenderers(allElements);
        }
    }

    const observer = new MutationObserver(() => {
        processLinks();
        processComments();
    });
    observer.observe(document.body, { childList: true, subtree: true });
    setInterval(processComments, 3000);
    if (document.readyState === 'complete') {
        handleElement(document.body.querySelector('.up-detail-top a'), 'abnormal'); // 用户名a[href]似乎还会被B站修改一次
    }
})();