随着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-扩展倍速
