解决B站(bilibili)因未登录而自动暂停视频并弹出登录窗口的问题 / Solve the problem of Bilibili automatically pausing video and popping up a login window because it is not logged in
< B站(bilibili)自动续播因未登录而暂停的视频 (Bilibili: Continue playing without logging-in)についてのフィードバック
我也试过在这个脚本里面加入点击bpx-player-ctrl-full,也没弄好
不好意思,上文写错了,“禁止第一个js可阻止视频播放到1分钟左右”这里应该是“禁止第二个js”。
目前直接在 ublock 里添加以下规则:
||s1.hdslb.com/bfs/seed/jinkela/short/mini-login-v2/miniLogin.umd.min.js ||s1.hdslb.com/bfs/static/jinkela/video/*.js
算是勉强解决,后来尝试了以下办法: ublock添加以下规则
||s1.hdslb.com/bfs/seed/jinkela/short/mini-login-v2/miniLogin.umd.min.js
然后配合油猴里新建以下脚本,解决了视频被暂停时可自动播放,缺点是 不能手动点击暂停,即便点击暂停后,也要继续播放。
(function() {
'use strict';
var target = document.getElementsByClassName("bpx-player-row-dm-wrap")[0];
var config = {attributes: true, attributeFilter: ["class"]};
var observer = new MutationObserver(function(motationList, observer) {
setTimeout(function(){
if (document.getElementsByClassName("bili-paused").length > 0) {
document.getElementsByClassName("bpx-player-ctrl-btn bpx-player-ctrl-play")[0].click();
}
}, 1000);
});
observer.observe(target, config);
})();
当然最好就是直接登录B站了:)
直接用 ublock 在自定义静态规则里禁止以下js即可
||s1.hdslb.com/bfs/seed/jinkela/short/mini-login-v2/miniLogin.umd.min.js ||s1.hdslb.com/bfs/static/jinkela/video/stardust-video.47b79406e492861cd14a81ef13df1bfc113e73f4.js
禁止第一个js可阻止弹窗登录和遮罩层的出现;禁止第一个js可阻止视频播放到1分钟左右的突然自动暂停,但禁用后评论区、头像、及右侧相关的图片没有了。
尝试只禁止第一个,保留第二个,然后检测到播放暂停后,点击bpx-player-ctrl-play 和 bpx-player-ctrl-full,但没弄好。
感谢分享,号被封了,我只发现未登录的情况下,定时弹窗的登录框和遮罩:
www.bilibili.com##.bili-mini-content-wp
www.bilibili.com##.bili-mini-mask
改进了一下楼上的代码,这样手动按空格的时候不会受影响,屑站帮你暂停的时候自动恢复播放。鼠标点击暂停也可以加上相应的检测,我都是按空格所以懒得写了。
(function() {
'use strict';
let isUserPause = false; // 标记是否用户按空格产生的暂停
let target = document.getElementsByClassName("bpx-player-row-dm-wrap")[0];
let config = {attributes: true, attributeFilter: ["class"]};
let observer = new MutationObserver(function(motationList, observer) {
// setTimeout 等元素加载后再添加 observer 方法
setTimeout(function(){
// 不是用户按的暂停,那就是屑站做的手脚
if (document.getElementsByClassName("bili-paused").length > 0 && !isUserPause) {
document.getElementsByClassName("bpx-player-ctrl-btn bpx-player-ctrl-play")[0].click();
}
}, 1000);
});
observer.observe(target, config);
window.__onKey__ = (event) => {
if (event.code !== "Space") return;
// 没有暂停时按空格,说明进入暂停,故标记为用户暂停;继续播放时清理掉标记
isUserPause = (document.getElementsByClassName("bili-paused").length === 0);
};
document.addEventListener('keydown', window.__onKey__, true);
})();
我修改过的版本也发布了,只解决自动暂停的问题,需要像楼上一样配合ublock origin规则把登录弹窗屏蔽
直接用 ublock 在自定义静态规则里禁止以下js即可
禁止第一个js可阻止弹窗登录和遮罩层的出现;禁止第一个js可阻止视频播放到1分钟左右的突然自动暂停,但禁用后评论区、头像、及右侧相关的图片没有了。
尝试只禁止第一个,保留第二个,然后检测到播放暂停后,点击bpx-player-ctrl-play 和 bpx-player-ctrl-full,但没弄好。