B站已注销账号存档查看油猴脚本

hik
@Ta 10小时前发布,10小时前修改 53点击

效果图(鼠标移动到用户名上即可):
image.png

没事写的,只是好奇哪些号无了,脚本代码:

// ==UserScript==
// @name         B站已注销账号检测存档
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  B站已注销账号存档查看,在已关注列表里搜“注销”即可查看你关注人哪些账号已注销,用于查看哪些人账号注销了,鼠标移动到“账号已注销”文字上即可
// @author       You
// @match        *://*.bilibili.com/*
// @icon         https://www.bilibili.com/favicon.ico
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    let tooltip = null;
    let bufferArea = 50; // 鼠标允许移动的缓冲范围(像素)

    function createTooltip(uid, x, y) {
        if (tooltip) tooltip.remove();
  
        // 创建提示框
        tooltip = document.createElement('div');
        Object.assign(tooltip.style, {
            position: 'fixed',
            background: '#fff',
            border: '1px solid #ccc',
            padding: '8px',
            borderRadius: '4px',
            boxShadow: '0 2px 8px rgba(0,0,0,0.1)',
            zIndex: '999999',
            left: `${x}px`,
            top: `${y}px`
        });

        // 内容链接
        const link = `https://www.biliplus.com/api/do.php?act=search&o=pubdate&n=30&p=1&source=biliplus&word=%40m%3D${uid}`;
        tooltip.innerHTML = `<a href="${link}" target="_blank" style="color: #00a1d6; text-decoration: none;">查看历史投稿 (BiliPlus)</a>`;

        document.body.appendChild(tooltip);

        // 绑定新的鼠标追踪
        document.addEventListener('mousemove', trackMouseMovement);
        return tooltip;
    }

    // 鼠标移动追踪
    function trackMouseMovement(e) {
        if (!tooltip) return;

        // 计算有效区域
        const rect = tooltip.getBoundingClientRect();
        const safeArea = {
            left: rect.left - bufferArea,
            right: rect.right + bufferArea,
            top: rect.top - bufferArea,
            bottom: rect.bottom + bufferArea
        };

        // 检测是否超出范围
        if (
            e.clientX < safeArea.left ||
            e.clientX > safeArea.right ||
            e.clientY < safeArea.top ||
            e.clientY > safeArea.bottom
        ) {
            tooltip.remove();
            tooltip = null;
            document.removeEventListener('mousemove', trackMouseMovement);
        }
    }

    // 鼠标悬停逻辑
    document.addEventListener('mouseover', function(e) {
        const target = e.target;
        if (target.matches('div.vui_ellipsis.multi-mode') && target.textContent.trim() === '账号已注销') {
            const parentLink = target.closest('a.relation-card-info__uname[href*="space.bilibili.com/"]');
            if (parentLink) {
                const fullUrl = parentLink.href.startsWith('//') 
                    ? `https:${parentLink.href}` 
                    : parentLink.href;
                const uidMatch = fullUrl.match(/\/\/(?:www\.)?space\.bilibili\.com\/(\d+)/);
          
                if (uidMatch?.[1]) {
                    // 智能定位(防止超出视口)
                    const xPos = Math.min(e.pageX, window.innerWidth - 200);
                    const yPos = Math.min(e.pageY, window.innerHeight - 50);
                    createTooltip(uidMatch[1], xPos, yPos);
                }
            }
        }
    });

    // 保留滚动隐藏
    window.addEventListener('scroll', () => {
        if (tooltip) {
            tooltip.remove();
            tooltip = null;
        }
    });
})();
回复列表(0|隐藏机器人聊天)
帖子没有回复
添加新回复
回复需要登录