关闭B站自动播放下一个视频(自动切集)

解决B站恼人的单个视频自动播放问题,只对HTML5播放器生效。如果是视频集则自动播放,如果是单个视频则不自动播放。

目前為 2021-11-14 提交的版本,檢視 最新版本

// ==UserScript==
// @name         关闭B站自动播放下一个视频(自动切集)
// @namespace    https://www.tampermonkey.net/
// @version      0.8
// @description  解决B站恼人的单个视频自动播放问题,只对HTML5播放器生效。如果是视频集则自动播放,如果是单个视频则不自动播放。
// @author       ProDark
// @match        https://www.bilibili.com/*
// @grant        none
// @run-at       document-end
// ==/UserScript==


(function() {
    'use strict';

    // Your code here...
    function check_list_exist(){
        try
        {
            var tempLists = document.getElementsByTagName("div");
            for(var i in tempLists){
                var theAttrClass = tempLists[i].getAttribute("class");
                if( theAttrClass == "plp-r" || theAttrClass == "cur-list" || theAttrClass == "video-sections")
                {//判断是不是列表形连续剧
                    return true;
                }
            }
            return false;
        }
        catch(err)
        {
            return false;
        }
    }

    function ClickButton(Target){
        var e = document.createEvent("MouseEvents");
        e.initMouseEvent("click", true, false);
        Target.dispatchEvent(e);
    }
    //-------------------------------------------------------------------------------------------
    function AutoNextON(){
        var divs = document.getElementsByTagName("span");
        for(var i=0;i<divs.length;i++){
            if( divs[i].innerText == "自动切集")
            {
                ClickButton(divs[i]);
                break;
            }
        }
    }
    function AutoNextOFF(){
        var divs = document.getElementsByTagName("span");
        for(var i=0;i<divs.length;i++){
            if( divs[i].innerText == "播完暂停")
            {
                ClickButton(divs[i]);
                break;
            }
        }
    }
    function MouseFn_fix(){
        return;
        // 鼠标滚轮在操作完后无法滚动条件音量,尝试随便点个位置让功能恢复
        var i = 0;
        var divs = document.getElementsByTagName("button");
        for(i=0;i<divs.length;i++){

            if( divs[i].getAttribute("class") == "bilibili-player-iconfont bilibili-player-iconfont-fullscreen-off player-tooltips-trigger")
            {
                ClickButton(divs[i]);
                break;
            }
        }
/*
        var divs2 = document.getElementsByTagName("button");
        for(i=0;i<divs2.length;i++){

            if( divs2[i].getAttribute("class") == "bilibili-player-iconfont bilibili-player-iconfont-fullscreen-on player-tooltips-trigger")
            {
                ClickButton(divs2[i]);
                break;
            }
        }
*/
    }
    function check_fullscreen_button(){
        try
        {
            var tempLists = document.getElementsByTagName("button");
            for(var i in tempLists){
                var theAttrClass = tempLists[i].getAttribute("class");
                if( theAttrClass == "bilibili-player-iconfont bilibili-player-iconfont-fullscreen-off player-tooltips-trigger")
                {//判断是不是列表形连续剧
                    return true;
                }
            }
            return false;
        }
        catch(err)
        {
            return false;
        }
    }
    function MainProcess_old(){
        //设置按钮
            var buttons = document.getElementsByTagName("button");
            for(var i=0;i<buttons.length;i++){
                if( buttons[i].getAttribute("class") == "bilibili-player-iconfont bilibili-player-iconfont-setting")
                {
                    var e = document.createEvent("MouseEvents");
                    e.initMouseEvent("mouseover", true, false );
                    buttons[i].dispatchEvent(e);

                    var e2 = document.createEvent("MouseEvents");
                    e2.initMouseEvent("mouseout", true, false);
                    buttons[i].dispatchEvent(e2);
                    //模拟鼠标放到按钮并移开,使其加载 目标按钮节点

                    break;
                }
            }
            //成功加载

            if(check_list_exist()){
                AutoNextON();
                MouseFn_fix();
            }
            else{
                AutoNextOFF();
                MouseFn_fix();
            }
    }

    //-------------------------------------------------------------------------------------------
    function check_videoplayer_ready(){
        //squirtle-progress-wrap squirtle-progress-common ease
        try
        {
            var tempLists = document.getElementsByTagName("div");
            for(var i in tempLists){
                var theAttrClass = tempLists[i].getAttribute("class");
                if( theAttrClass == "bilibili-player-video-progress-slider bui bui-slider" || theAttrClass == "squirtle-controller   squirtle-pgc")
                {//检查播放器是否准备完毕 // 有两种播放器
                    return true;
                }
            }
            return false;
        }
        catch(err)
        {
            return false;
        }
    }
    function Need_to_make_Off(){
        var divs = document.getElementsByTagName("p");
        for(var i=0;i<divs.length;i++){
            if( divs[i].getAttribute("class") == "rec-title")
            {
                return true;
            }
        }
        return false
    }

    function AutoNextON_inVideo(){
        try
        {
            var tempLists = document.getElementsByTagName("div");
            for(var i in tempLists){
                var theAttrClass = tempLists[i].innerText;
                if( tempLists[i].innerText == "自动切集")
                {
                    ClickButton(tempLists[i])
                    return true;
                }
            }
            console.log("Error : AutoNextON_inVideo");
            return false;
        }
        catch(err)
        {
            console.log("Error : AutoNextON_inVideo");
            return false;
        }
    }
    function AutoNextButtonOFF()
    {

        var divs = document.getElementsByTagName("span");
        for(var i=0;i<divs.length;i++){
            if( divs[i].getAttribute("class") == "switch-button on")
            {
                ClickButton(divs[i]);
                return true;
            }
        }
        return false
    }
    function AutoNextButtonON()
    {

        var divs = document.getElementsByTagName("span");
        for(var i=0;i<divs.length;i++){
            if( divs[i].getAttribute("class") == "switch-button")
            {
                ClickButton(divs[i]);
                return true;
            }
        }
        return false
    }
    function MainProcess(){

        var ret = false;
        if(Need_to_make_Off())
        {
            ret = AutoNextButtonOFF();
            console.log("关闭自动切集");
        }else{
            ret = AutoNextON_inVideo();
            if(ret == false){
                ret = AutoNextButtonON();
            }
            console.log("启动自动切集");
        }
        //alert(ret);
        if(ret == true){
            console.log("执行成功");
            return true;
        }else{
            console.log("执行失败,按钮不存在或已经完成功能");
            return false;
        }
    }

    //-------------------------------------------------------------------------------------------
    var TryTimeOut = 20;
    var MainProcessTimeOut = 3;
    function MainTimeOut(){
        setTimeout(function(){
            TryTimeOut --;
            if( TryTimeOut<0)
            {
                return;
            }
            if( check_videoplayer_ready()== true )
            {
                if( MainProcess() == false )
                {
                    MainProcessTimeOut --;
                    if( MainProcessTimeOut>0)
                    {
                        MainTimeOut();
                    }
                }

            }else{
                console.log("ERROR: 这个页面没找到H5播放器");
                MainTimeOut();
            }

        },1000);//延迟1秒执行....我也不知道怎么确定页面加载完了.......
    }


    window.onload = function(){
        MainTimeOut()
    }

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址