Greasy Fork is available in English.

B站(bilibili)自动续播因未登录而暂停的视频 (Bilibili: Continue playing without logging-in)

解决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)的反馈

提问/评论

§
发表于:2023-03-20

直接用 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,但没弄好。

§
发表于:2023-03-27

我也试过在这个脚本里面加入点击bpx-player-ctrl-full,也没弄好

§
发表于:2023-03-31

不好意思,上文写错了,“禁止第一个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站了:)

§
发表于:2023-04-19

直接用 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

§
发表于:2023-05-31

改进了一下楼上的代码,这样手动按空格的时候不会受影响,屑站帮你暂停的时候自动恢复播放。鼠标点击暂停也可以加上相应的检测,我都是按空格所以懒得写了。

(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);

})();
§
发表于:2023-05-31
编辑于:2023-05-31

我修改过的版本也发布了,只解决自动暂停的问题,需要像楼上一样配合ublock origin规则把登录弹窗屏蔽

发表回复

登录以发表回复。