Greasy Fork is available in English.

bilibili vip remover

remove the 'become-vip' link, repalce red names to original, and replace emoji to pure text

// ==UserScript==
// @name         bilibili vip remover
// @name:zh-CN   bilibili大会员削除
// @namespace    myfreeer
// @version      0.11
// @description  remove the 'become-vip' link, repalce red names to original, and replace emoji to pure text
// @description:zh-CN  去除“成为大会员”链接,将红名替换为原始格式,替换表情为纯文字
// @author       myfreeer
// @match        http://*.bilibili.com/*
// @match        http://*.bilibili.com/
// @match        https://*.bilibili.com/*
// @match        https://*.bilibili.com/
// @license      MIT
// @grant        GM_getValue
// @grant        GM_setValue
// ==/UserScript==
//edited from http://javascript.ruanyifeng.com/dom/mutationobserver.html
(function (win) {
    'use strict';

    var listeners = [];
    //var doc = window.document;
    //var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
    var observer;

    function ready(selector, fn) {
        // 储存选择器和回调函数
        listeners.push({
            selector: selector,
            fn: fn
        });
        if (!observer) {
            // 监听document变化
            observer = new MutationObserver(check);

            observer.observe(document.documentElement, {
                childList: true,
                subtree: true,
                attributes: true,
                attributeFilter: ['style', 'class']
            });
        }
        // 检查该节点是否已经在DOM中
        check();
    }

    function check() {
        // 检查是否匹配已储存的节点
        for (var i = 0; i < listeners.length; i++) {
            var listener = listeners[i];
            // 检查指定节点是否有匹配
            var elements = document.querySelectorAll(listener.selector);
            for (var j = 0; j < elements.length; j++) {
                var element = elements[j];
                // 确保回调函数只会对该元素调用一次
                //if (!element.ready) {
                //    element.ready = true;
                //    // 对该节点调用回调函数
                listener.fn.call(element, element);
                //}
            }
        }
    }

    // 对外暴露ready
    win.ready = ready;
})(window);

//Compiled by Babel from https://gist.github.com/myfreeer/99111e7f10767770dc399e24bf6ab9b3
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }

//from https://lvwenhan.com/web-front/374.html
function removeClass(obj, cls) {
    var obj_class = ' ' + obj.className + ' '; //获取 class 内容, 并在首尾各加一个空格. ex) 'abc        bcd' -> ' abc        bcd '
    obj_class = obj_class.replace(/(\s+)/gi, ' '); //将多余的空字符替换成一个空格. ex) ' abc        bcd ' -> ' abc bcd '
    var removed = obj_class.replace(' ' + cls + ' ', ' '); //在原来的 class 替换掉首尾加了空格的 class. ex) ' abc bcd ' -> 'bcd '
    removed = removed.replace(/(^\s+)|(\s+$)/g, ''); //去掉首尾空格. ex) 'bcd ' -> 'bcd'
    obj.className = removed; //替换原来的 class.
    return obj.className;
}

function addStyle(css) {
    if (!css) return false;
    var head = document.head || document.getElementsByTagName('head')[0],
        style = document.createElement('style');
    style.type = 'text/css';
    if (style.styleSheet) {
        style.styleSheet.cssText = css;
    } else {
        style.appendChild(document.createTextNode(css));
    }
    head.appendChild(style);
}

var obj = JSON.parse(GM_getValue('emoji', '{}'));
var refresh = function refresh() {
    return fetch('https://api.bilibili.com/x/v2/reply/emojis').then(function (e) {
        return e.json();
    }).then(function (json) {
        obj = {};
        if (!json.data) return;
        json.data.forEach(function (a) {
            return a.emojis && a.emojis.forEach(function (e) {
                return e.name && e.url && e.url.match(/^https?/) && (obj[new URL(e.url).pathname] = e.name);
            });
        });
        obj.time = Date.now();
        GM_setValue('emoji', JSON.stringify(obj));
    });
};
if (!(obj.time && Date.now() - 3600 * 1000 * 24 * 7 > obj.time)) refresh();
var img2str = function img2str(e) {
    if (!(e && e.alt && e.src && e.src.match('http'))) return;
    var name = '[' + e.alt + ']';
    var path = new URL(e.src).pathname.replace(/@[0-9]+w_[0-9]+h\.webp$/, '');
    if (path && obj[path]) name = obj[path];
    e.outerHTML = ' ' + name + ' ';
};

var becomevip = document.getElementById('i_menu_become_vip');
if (becomevip) becomevip.remove();
[].concat(_toConsumableArray(document.getElementsByClassName('b-vip-red')), _toConsumableArray(document.getElementsByClassName('vip-red-name'))).map(function (e) {
    return removeClass(e, 'b-vip-red') && removeClass(e, 'vip-red-name');
});
[].concat(_toConsumableArray(document.getElementsByClassName('b-vip-emoji'))).map(function (e) {
    return e.outerHTML = e.alt;
});
[].concat(_toConsumableArray(document.getElementsByClassName('h-vipType'))).map(function (e) {
    return e.remove && e.remove();
});
[].concat(_toConsumableArray(document.querySelectorAll('span.user-auth-subscript'))).map(function (e) {
    return e.remove && e.title.match("大会员") && e.remove();
});
[].concat(_toConsumableArray(document.querySelectorAll('#bbComment > .bb-comment > .comment-list > div > .con > p > img'))).map(img2str);
document.querySelectorAll('a[href="//account.bilibili.com/account/big"]').forEach(function (e) {
  return e.parentNode.className == 'nav-item' && e.parentNode.remove();
});
ready('.b-vip-red', function (e) {
    return removeClass(e, 'b-vip-red');
});
ready('.vip-red-name', function (e) {
    return removeClass(e, 'vip-red-name');
});
ready('.b-vip-emoji', function (e) {
    return e.outerHTML = e.alt;
});
ready('#bbComment > .bb-comment > .comment-list > div > .con > p > img', img2str);
ready('.h-vipType', function (e) {
    return e.remove && e.remove();
});
ready('span.user-auth-subscript', function (e) {
    return e.remove && e.title.match("大会员") && e.remove();
});
ready('.nav-item', function (e) {
  return e.innerHTML.match("account.bilibili.com/account/big") && e.remove();
});
addStyle('.user-auth-subscript{background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAAC61BMVEVHcEz///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9Kx///ulBLx///ulL/u1JKxv/7/v9Tyv961v9OyP+W3//9/v//vlr/ulH+//////7/zH///v3/xWz/6MX/vVn/+vP/5sG+6/9m0P///fye4f/x+////fv/15r/3KaG2v//0Yv/0IqF2f9r0f9t0v//x3H/2qL/8+Lg9f9q0f/h9v//u1TE7f+Z3///x3L/w2dhzv//0o6J3P/D7P/y+//v+v//vFWd4f9Pyf//+e//+vGZ4P//2Z2i4v951f//zH7/6cZTy/+X3///2J3/yHT/xGpMyP//u1P/26T/+/Vs0v//xm7/+vL/x3D/9+xgzv//zHv/0Yr/wmRezf///fr/vFZo0P//4rb/6MbD7f//vVf/15v/yHP/2qH7/f9Mx/9kz///z4X0/P911f9u0v//0IiD2f/s+f/q+P9p0P+L2/+S3f//1Zb/05Cz6P//wWP//Pn/vVag4v///PvF7v//3qyo5P//1pj/9OL/2Z+h4v9Syf/5/f//xW3/3an/vFSB2P//wmb/9OGl4//v+/9x1P/8/v9dzf/6/f/0+//G7f//x27w+v//9uno+P+y5///47hv0v+16P/m9///9ueP3f//9eX/+O3k9///yXdVy///yXj/1ZX/v12F2v//zYD/1pn/6MT/6cj/6cdPyv//6cX/+fH/4rWT3v+G2f+T3/+w5///4bLVqU8YAAAAS3RSTlMAn7UenB/Y6fr5wa3zcKdNm5n76lgrSuHg0tEYGZRGU1TCWdWWrCBvaqjomE7rUlz1tgMaFhcB2pUVVx2015pHz5IIBUELE0kqQDPKG4W9AAAF/UlEQVR4Xu2ZVXAbVx9HG8cc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) !important}.h-vipType,#i_menu_become_vip{display:none !important}');