Greasy Fork

Greasy Fork is available in English.

去你妈的批站诈骗广告

bilibili,B站,屏蔽首页小火箭推广视频,屏蔽广告,屏蔽左侧大图滑动推荐栏

目前为 2025-03-15 提交的版本。查看 最新版本

// ==UserScript==
// @name         去你妈的批站诈骗广告
// @namespace    http://tampermonkey.net/
// @version      1.4
// @description  bilibili,B站,屏蔽首页小火箭推广视频,屏蔽广告,屏蔽左侧大图滑动推荐栏
// @author       爆菊大师
// @match        *://*.bilibili.com/*
// @grant        none
// @license MIT
// ==/UserScript==

(function () {
    'use strict';
    const selectors = {
        pseudo: '.bili-video-card.is-rcmd',
        icons: '.vui_icon.bili-video-card__stats--icon',
        adFeed: '.bili-video-card__mask .bili-video-card__stats--text',
        skeleton: '.bili-live-card.is-rcmd.enable-no-interest .bili-live-card__skeleton.hide',
        swipe: '.recommended-swipe.grid-anchor, .floor-single-card, .fixed-card',
        feedCard: '.feed-card'
    };
    function adjustStyle(element, property, value) {
        element.style[property] = value;
    }
    function checkFeedCardMargin() {
        document.querySelectorAll(selectors.feedCard).forEach(el => {
            const margin = window.getComputedStyle(el).marginTop;
            if (margin === '40px') adjustStyle(el, 'marginTop', '0');
        });
    }
    function hideElement(element) {
        adjustStyle(element, 'display', 'none');
    }
    function isBlocked(element) {
        const content = window.getComputedStyle(element, '::before').content;
        return content.includes('AdGuard') || content.includes('AdBlock');
    }
    function checkElements(selector, condition, parentSelector) {
        document.querySelectorAll(selector).forEach(el => {
            const target = parentSelector ? el.closest(parentSelector) : el;
            if (target && (!condition || condition(el))) hideElement(target);
        });
    }
    function runAllChecks() {
        checkElements(selectors.pseudo, el =>
            isBlocked(el) || Array.from(el.children).some(isBlocked)
        );
        checkElements(selectors.icons, null, '.bili-video-card');
        checkElements(selectors.adFeed, el =>
            el.textContent.includes('广告'), '.bili-video-card__wrap'
        );
        checkElements(selectors.skeleton, null, '.bili-live-card');
        checkElements(selectors.swipe);

        checkFeedCardMargin();
    }
    runAllChecks();
    new MutationObserver(() => {
        runAllChecks();
        checkFeedCardMargin();
    }).observe(document.body, { subtree: true, childList: true });
})();