Greasy Fork is available in English.

Bilibili 哔哩哔哩 过滤热门页 视频播放页 视频

根据[视频作者]或者[标题关键词],过滤B站(Bilibili 哔哩哔哩),[热门页]的视频,以及[单个视频播放页面]的(右侧)推荐视频。

// ==UserScript==
// @name         Bilibili 哔哩哔哩 过滤热门页 视频播放页 视频
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description   根据[视频作者]或者[标题关键词],过滤B站(Bilibili 哔哩哔哩),[热门页]的视频,以及[单个视频播放页面]的(右侧)推荐视频。
// @author        批小将
// @match         https://www.bilibili.com/*
// @require       https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js
// @supportURL    https://github.com/ajfg93/bilibili-filter
// @grant         none
// ==/UserScript==

(function() {
    'use strict';
    'use strict'

    //默认自己添加关键词
    let getKeyWordsFromGithub = false;
    //默认设置display:none,元素不会保留原来的空间,false则是设置visibility:hidden
    let displayNone = true;
    //视频作者和标题关键词
    let author = ["张无忌", "张三丰"];
    let title = ["NBA"];

    let authorStr = author.join('|');
    let titleStr = title.join('|');

    let authorReg = new RegExp(authorStr);
    let titleReg = new RegExp(titleStr);

    function filterHotRanking(){
        let hotRankingItems = $('li.rank-item');

        for(let i = 0; i < hotRankingItems.length; i++){
            //find找到多个也没有关系,text()会把文本直接join("")起来。
            let item = hotRankingItems[i];
            let title = $(item).find('a.title').text();  
            let author = $(item).find('span.data-box').text();
            if(authorReg.test(author) || titleReg.test(title)){
                if(displayNone)
                    $(item).hide();
                else
                    $(item).css('visibility', 'hidden');
            }
        }
    }

    function filterVideoPager(){
        let videoRec = $('.video-page-card');
        for(let i = 0; i < videoRec.length; i++){
            let video = videoRec[i];
            let title = $(video).find('a.title').text();
            let author = $(video).find('div.count.up > a').text();
            if(authorReg.test(author) || titleReg.test(title)){
                if(displayNone)
                    $(video).hide();
                else
                    $(video).css('visibility', 'hidden');
            }

        }
    }



    function main(){
        let currentPath = window.location.pathname.split('/')[1];
        if(currentPath === 'ranking')
            filterHotRanking();
        if(currentPath === 'video')
            filterVideoPager();
    }

    if(getKeyWordsFromGithub){
        let xhttp = new XMLHttpRequest();
        xhttp.responseType = 'text';
        xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
               keywords = JSON.parse(this.responseText);
               author = keywords.author;
               title = keywords.title;
            }
            main();
        };
        xhttp.open("GET", "https://raw.githubusercontent.com/ajfg93/bilibili-filter/master/keywords.txt", true);
        xhttp.send();
    }else{
        main();
    }

})();