b站动态页面使用体验增强

快速收起B站评论、屏蔽充电动态、带货动态、添加屏蔽up主

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         b站动态页面使用体验增强
// @namespace    http://tampermonkey.net/
// @version      0.44
// @description  快速收起B站评论、屏蔽充电动态、带货动态、添加屏蔽up主
// @author       XBss
// @match        https://t.bilibili.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bilibili.com
// @grant        none
// @license MIT
// ==/UserScript==
let key1
let ban_storage = localStorage.getItem("ban")
// console.log(ban_storage)
if(ban_storage==null){
    localStorage.setItem("ban","")
    ban_storage = ""
}
let ban=ban_storage.split("|")
let ban_update = false
function mouse_down(event){
    const x = event.clientX, y = event.clientY;
    const element = document.elementFromPoint(x, y);
    // console.log(element.className)
    if (element.className.includes("comment")){
        key1 = element
    }
    if (!element) {
        console.log("error: no element")
    }
}

// 获取页面滚动的元素,通常是 window
const scrollingElement = window;
let scroll_num = 201;
// 添加滚动事件监听器
scrollingElement.addEventListener('scroll', function() {
    scroll_num++
    if (scroll_num>200||ban_update===true){
        const elements = document.querySelectorAll('.bili-dyn-item__main');
        // 遍历所有匹配的元素
        elements.forEach(function(element) {
            // 获取元素中的文本内容,该文本是每个up的名字
            const textContent = element.querySelector('.bili-dyn-title__text').textContent;
            ban.forEach(function (content, index) {
                // if (content===""){
                //     console.log("空的")
                // }
                if (content!==""&&textContent.includes(content)){
                    element.style.display = 'none';
                }
            })
            // 使用 querySelector 来查找内部的子元素
            //目前充电动态可以识别因为有充电字样,但是充电视频只在封面图片有充电字样无法检索,所以将不能评论的都判定为充电视频
            const commentElement = element.querySelector("div[data-type='comment']");
            if (!commentElement) {

                // 没有找到评论元素,判定为充电专属
                // console.log(textContent);
                // console.log("不包含评论元素");
                element.style.display = 'none';
            }
            const goodsElement = element.querySelector(".dyn-goods");
            if (goodsElement){
                // 找到商品元素,判定为带货广告
                element.style.display = 'none';
            }
        });
        scroll_num = 0
        ban_update = false
    }
});


let Container = document.createElement('div');
Container.id = "sp-ac-container";
Container.style.position="fixed"
Container.style.left="1400px"
Container.style.top="700px"
Container.style['z-index']="999999" //设置为网页顶层
Container.innerHTML =`<button id="myCustomize" style="position:absolute; left:30px; top:20px;background-color: yellow;cursor: pointer;">
  关闭评论
</button>
`
Container.addEventListener('click',function (e) {
    key1.scrollIntoView(true)
    window.scrollBy(0,-350)
    key1.click()
})
let x
let y
let move = function (e){
    Container.style.left = e.pageX- x+'px'
    Container.style.top = e.pageY-y+"px"
};
Container.addEventListener('mousedown',function (e) {
    x = e.pageX - this.offsetLeft
    y = e.pageY - this.offsetTop
    document.addEventListener('mousemove',move)
    // Container.addEventListener('mousemove',move)
    document.addEventListener('mouseup',function (){
        document.removeEventListener('mousemove',move)
    })
})

/**
 * 如果在小组件上加这个,移动过快会触发不了这个事件,所以还是直接在document上加就行
 */
// Container.addEventListener('mouseup',function (){
//     // document.removeEventListener('mousemove',move)
//     Container.removeEventListener('mousemove',move)
// })
document.body.appendChild(Container);
document.onmousedown = mouse_down

// 创建一个包含按钮和文本框的容器 div
let container = document.createElement('div');
container.id = 'myContainer';
container.style.position = 'fixed';
container.style.left = '1300px';
container.style.top = '900px';
container.style['z-index'] = '999999';

// 创建一个按钮
let button = document.createElement('button');
button.id = 'myCustomize';
button.style.position = 'absolute';
button.style.left = '30px';
button.style.top = '20px';
button.style.backgroundColor = 'yellow';
button.style.cursor = 'pointer';
button.textContent = '屏蔽';

// 创建一个文本框
let textBox = document.createElement('input');
textBox.type = 'text';
textBox.value = ban_storage
textBox.style.display = 'none';

// 将按钮和文本框添加到容器中
container.appendChild(button);
container.appendChild(textBox);

// 将容器添加到文档的 body 中
document.body.appendChild(container);
// 添加按钮点击事件监听器
button.addEventListener('click', function() {
    // 在按钮点击时执行操作,例如显示/隐藏文本框
    if (textBox.style.display === 'none' || textBox.style.display === '') {
        textBox.style.display = 'block';
    } else {
        textBox.style.display = 'none';
    }
});
// 添加文本框内容变化事件监听器
textBox.addEventListener('input', function() {
    // 更新存储文本框内容的变量
    ban = textBox.value.split('|');
    localStorage.setItem("ban",textBox.value)
    ban.update = true;
});