Greasy Fork

Greasy Fork is available in English.

Bilibili 账号已注销修正

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

当前为 2025-08-27 提交的版本,查看 最新版本

// ==UserScript==
// @name         Bilibili 账号已注销修正
// @name:zh-CN   Bilibili 账号已注销修正
// @namespace    http://tampermonkey.net/
// @version      2.0.0
// @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() {
        [
            ['div.bili-video-card__subtitle a'], // 收藏夹
            ['.up-detail-top a', 'abnormal'], // 视频/专栏页面等
            ['.bili-video-card__info--owner'] // 搜索
        ].forEach(([selector, type]) => {
            document.querySelectorAll(selector).forEach(el => handleElement(el, type));
        });
    }
    function handleElement(a, type = "normal") {
        let text = null;
        if (['space.bilibili.com', 'search.bilibili.com'].includes(location.hostname)) {
            text = a.textContent.split(" ");
        } else {
            text = a.text;
        }
        if (text.trim() === "账号已注销") {
            const match = a.href.match(/\/(\d+)\??/);
            if (match && type == "normal") {
                a.href = `https://www.bilibili.com/list/${match[1]}`;
                a.style.fontStyle = "italic";
            } else {
                a.style.fontStyle = "italic";
                a.addEventListener('click', function (event) {
                    event.preventDefault(); // 阻止默认跳转行为
                    window.open(`https://www.bilibili.com/list/${match[1]}`, '_blank');
                });
            }
        }
    }
    function processCommentRenderers(elements) {
        elements.forEach(renderer => {
            const bili = renderer.shadowRoot && renderer.shadowRoot.querySelector('bili-comment-renderer');
            const userInfo = bili && bili.shadowRoot && bili.shadowRoot.querySelector('bili-comment-user-info');
            const user = userInfo && userInfo.shadowRoot && userInfo.shadowRoot.querySelector('#user-name a');
            if (user) handleElement(user);

            const replies = renderer.shadowRoot && renderer.shadowRoot.querySelector('bili-comment-replies-renderer');
            if (!replies.shadowRoot.textContent.trim()) {
                renderer.setAttribute('data-processed', 'true');
                return;
            }

            const repliesRoot = replies && replies.shadowRoot;
            const replyNodes = repliesRoot && repliesRoot.querySelectorAll('bili-comment-reply-renderer');
            if (replyNodes) {
                replyNodes.forEach(reply => {
                    const rInfo = reply.shadowRoot && reply.shadowRoot.querySelector('bili-comment-user-info');
                    const rUser = rInfo && rInfo.shadowRoot && rInfo.shadowRoot.querySelector('#user-name a');
                    if (rUser) handleElement(rUser);
                });
            }
        });
    }
    function processComments() {
        const startElement = document.querySelector('bili-comments');
        if (startElement && startElement.shadowRoot) {
            const allElements = startElement.shadowRoot.querySelectorAll('bili-comment-thread-renderer:not([data-processed])');
            processCommentRenderers(allElements);
        }
    }

    const observer = new MutationObserver(() => {
        processComments();
        processLinks();
    });
    observer.observe(document.body, { childList: true, subtree: true });
})();