本文于 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-扩展倍速
Comments | NOTHING