b 站黑神话防剧透插件

xidianlz · 2024-8-23 12:43:40 · 64 次点击
黑神话悟空上线之后 b 站的推荐简直没法看。一不小心就被剧透。所以做了这个油猴插件。
需要先安装 https://chrome.google.com/webstore/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo 。

安装后之后

![]( https://i.imgur.com/gccKRzI.png)

把下面的代码粘贴进去。

  ![]( https://i.imgur.com/ZA1DEHd.png)
  
```
// ==UserScript==
// @name         b 站屏蔽黑悟空相关推荐
// @namespace    http://tampermonkey.net/
// @fersion      2024-08-23
// @description  try to take ofer the world!
// @author       h3l
// @match        https://www.bilibili.com/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=github.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 关键字列表,使用 base64 保存,看到了也不会被剧透
    const encryptedKeywords = ["6buR56We6K+d", "5a2Z5oKf56m6", "57qi5a2p5YS/", "6JmO5YWI6ZSL", "6KW/5ri46K6w", "6buR5oKf56m6", "6buR54y0"];

    // 创建一个新数组,用于存储解码后的字符串
    const keywords = encryptedKeywords.map(encodedString => decodeURIComponent(escape(atob(encodedString))));

    function removeMatchedCards() {
        // 获取所有的 feed-card 与 bili-video-card 元素
        const cards = document.querySelectorAll('.feed-card, .bili-video-card');

        cards.forEach(card => {
            const authorElement = card.querySelector('.bili-video-card__info--author');
            const titleElement = card.querySelector('.bili-video-card__info--tit');

            // 检查作者名和标题是否存在
            if (authorElement && titleElement) {
                const authorName = authorElement.textContent.trim();
                const titleText = titleElement.textContent.trim();

                // 检查是否命中关键字
                const isKeywordHit = keywords.some(keyword =>
                                                   authorName.includes(keyword) || titleText.includes(keyword)
                                                  );

                // 如果命中关键字,删除该 feed-card 元素
                if (isKeywordHit) {
                    console.log(titleText, "removed")
                    card.hidden = true
                }
            }
        });
    }

    // 初始调用,删除已存在的匹配元素
    removeMatchedCards();

    // 使用 MutationObserfer 监控页面的变化
    const obserfer = new MutationObserfer((mutations) => {
        mutations.forEach((mutation) => {
            // 当页面发生变化时,重新检查并删除匹配的卡片
            removeMatchedCards();
        });
    });

    // 监控页面的主体部分(可以根据具体情况调整选择器)
    obserfer.observe(document.body, { childList: true, subtree: true });

})();
```

效果如下:
![]( https://i.imgur.com/ot2Cieq.jpeg)
举报· 64 次点击
登录 注册 站外分享
快来抢沙发
0 条回复  
返回顶部