B站全平台辅助工具合集

发布于 19 天前  278 次阅读


本文于 2025年7月4日 10:45 更新,注意查看最新内容

随着B站的使用频率越来越高,发现有很多自定义的需求,这里记录一下,以备日后查阅。

自定义时间跳过片头

======2025.06.29二次更新======

避免查看不方便,代码移动至 《学习必备:B站全自动跳过固定片头片尾》

======2025.06.29更新======

原来的脚本太过于简单,没有对合集自动连播以及点击合集播放的片头和片尾处理。

利用豆包优化了一下(实际优化了挺长时间,苦笑),这就是利用AI的好处以及弊端。

好处是比起从0开始折腾能够较快速度解决问题,坏处就是对于细节的优化AI很难做到精细化处理。

以及在完全不懂编程的情况下,若AI无法解决,必然会出现反复需要调试的情况,极其耗费时间。

但若此时具备一定的编程知识,提供解决思路,那么对于AI解决问题的速度会成倍提高。

避免查看不方便,代码移动至 《学习必备:B站全自动跳过固定片头片尾》

======2025.06.29原文======

方法一(推荐):

每次手动太麻烦了,用豆包写了一个油猴脚本,测试可用。

// ==UserScript==
// @name         B站视频自动跳过前10秒
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  自动跳过B站视频前10秒
// @author       You
// @match        https://www.bilibili.com/video/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bilibili.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 等待视频元素加载完成
    const waitForVideo = () => {
        return new Promise(resolve => {
            const video = document.querySelector('video');
            if (video) {
                resolve(video);
                return;
            }

            const observer = new MutationObserver(mutations => {
                const video = document.querySelector('video');
                if (video) {
                    observer.disconnect();
                    resolve(video);
                }
            });

            observer.observe(document.body, {
                childList: true,
                subtree: true
            });
        });
    };

    // 检查是否是广告
    const isAd = (video) => {
        // 通过class判断是否是广告
        const adElements = document.querySelectorAll('.bpx-ad-player');
        return adElements.length > 0;
    };

    // 主函数
    const main = async () => {
        const video = await waitForVideo();
        console.log('视频元素已加载');

        let hasSkipped = false;
        let skipTimer = null;

        // 监听视频元数据加载完成事件
        video.addEventListener('loadedmetadata', () => {
            console.log('视频元数据已加载');
            if (!hasSkipped && !isAd(video)) {
                // 如果视频时长大于10秒,并且还没有跳过,则设置计时器
                if (video.duration > 10) {
                    skipTimer = setTimeout(() => {
                        video.currentTime = 10;
                        hasSkipped = true;
                        console.log('已跳过前10秒');
                    }, 100);
                }
            }
        });

        // 监听视频播放事件
        video.addEventListener('play', () => {
            console.log('视频开始播放');
            if (!hasSkipped && !isAd(video)) {
                if (video.duration > 10) {
                    // 如果已经有计时器,则清除它
                    if (skipTimer) {
                        clearTimeout(skipTimer);
                    }
                    // 设置新的计时器
                    skipTimer = setTimeout(() => {
                        video.currentTime = 10;
                        hasSkipped = true;
                        console.log('已跳过前10秒');
                    }, 100);
                }
            }
        });

        // 监听视频时间更新事件,防止回退
        video.addEventListener('timeupdate', () => {
            if (!hasSkipped && !isAd(video) && video.currentTime > 0 && video.currentTime < 10) {
                // 如果用户手动将进度条拖到了前10秒内,并且还没有跳过,则跳转到10秒
                video.currentTime = 10;
                hasSkipped = true;
                console.log('已跳过前10秒(手动回退检测)');
            }
        });
    };

    main();
})();

 

方法二:油猴脚本Bilibili Evolved-快捷键扩展-设置长跳跃秒数

说明:非一键自动跳转,也不可能支持全视频一键跳转,因为有些视频的片头并非规范化的片头,只是在用户看来由于它与视频主体内容进行了区分,我们观看时将它识别成了片头(若是规范化的片头,B站可以设置一键跳过)。

屏蔽在看人数及弹幕数

方法:插件AdGuard-用户过滤器-添加如下规则

##.bpx-player-video-info

##.bpx-player-video-info

自定义倍速时间

方法:油猴脚本Bilibili Evolved-扩展倍速

提升页面加载速度及去除干扰内容

https://lklog.cn/course/1264.html

https://lklog.cn/chat/1258.html


这短短的一生,我们最终都会失去。