您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
解决B站恼人的单个视频自动播放问题,只对HTML5播放器生效。如果是视频集则自动播放,如果是单个视频则不自动播放。
当前为
// ==UserScript== // @name 关闭B站自动播放下一个视频(自动切集) // @namespace https://www.tampermonkey.net/ // @version 2.0 // @description 解决B站恼人的单个视频自动播放问题,只对HTML5播放器生效。如果是视频集则自动播放,如果是单个视频则不自动播放。 // @author ProDark // @match https://www.bilibili.com/* // @grant none // @run-at document-end // ==/UserScript== (function() { 'use strict'; // Your code here... function ClickButton(Target){ var e = document.createEvent("MouseEvents"); e.initMouseEvent("click", true, false); Target.dispatchEvent(e); }; function pageAcive(){ //后台打开的页面没有播放器载入,主要功能失效。这个用于判断页面处于后台还是前台。 //console.log(document.hidden); if(document.hidden){ // 如果当前页面在后台打开 return false; } else { return true; } }; //------------------------------------------------------------------------------------------- function check_videoplayer_ready(){ //squirtle-progress-wrap squirtle-progress-common ease try { var tempLists = document.getElementsByTagName("div"); for(var i=0;i<tempLists.length;i++){ //console.log(i,tempLists[i].getAttribute("aria-label")); if( tempLists[i].getAttribute("aria-label")=='哔哩哔哩播放器' ) { return true; } var theAttrClass = tempLists[i].getAttribute("class"); if( theAttrClass == "bilibili-player-video-progress-slider bui bui-slider" || theAttrClass == "squirtle-controller squirtle-pgc") {//检查播放器是否准备完毕 // 有两种播放器 return true; } } //console.log(" check_videoplayer_ready() == false "); return false; } catch(err) { console.log("Error : 查找播放器Error"); console.log(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 Switch_button_type_check(){ var divs = document.getElementsByTagName("span"); for(var i=0;i<divs.length;i++){ if( divs[i].getAttribute("class") == "switch-button") { return "播完暂停"; } if( divs[i].getAttribute("class") == "switch-button on") { return "自动切集"; } } return "没有找到该按钮"; }; function CheckActiveType_inVideoPlayer(){ var tempDIVs = document.getElementsByTagName("div"); for(var i in tempDIVs) { var current_CLASS = "temp_________" if( tempDIVs[i].innerText == "自动切集" ){ current_CLASS = tempDIVs[i].getAttribute("class"); console.log("自动切集 active"); console.log( current_CLASS.indexOf("active") ) return "自动切集"; //--------------------------- } if( tempDIVs[i].innerText == "播完暂停" ){ current_CLASS = tempDIVs[i].getAttribute("class"); console.log("播完暂停 active"); console.log( current_CLASS.indexOf("active") ) return "播完暂停"; //--------------------------- } } console.log("error : 没有找到播放器内的按钮" ); return "CheckActiveType error"; }; var AutoNextButton_Set_OFF_Task = "nil"; var AutoNextButton_Set_ON_Task = "nil"; function MainProcess(){ var ret = false; if(Need_to_make_Off()) { ret = AutoNextButtonOFF(); console.log("尝试关闭自动切集"); if(AutoNextButton_Set_OFF_Task == "nil") { AutoNextButton_Set_OFF_Task = setInterval(function(){ if( Switch_button_type_check() == "播完暂停"|| CheckActiveType_inVideoPlayer() == "播完暂停" ) { console.log("关闭自动切集【成功】"); clearInterval(AutoNextButton_Set_OFF_Task); }else{ console.log("关闭自动切集【失败】,稍后重复执行"); MainProcess(); } },3000); } }else{ ret = AutoNextON_inVideo(); if(ret == false){ ret = AutoNextButtonON(); } console.log("尝试启动自动切集"); if(AutoNextButton_Set_ON_Task == "nil"){ AutoNextButton_Set_ON_Task = setInterval(function(){ if( CheckActiveType_inVideoPlayer() == "自动切集" || Switch_button_type_check() == "自动切集" ) { console.log("启动自动切集【成功】"); clearInterval(AutoNextButton_Set_ON_Task); }else{ console.log("启动自动切集【失败】,稍后重复执行"); MainProcess(); } },3000); } } return true; }; //------------------------------------------------------------------------------------------- var TaskTimeOutNum = 20; var MainPrecess_Timer = "nil"; function MainTimeOut_2(){ if( MainPrecess_Timer == "nil" ){ MainPrecess_Timer = setInterval(function(){ if( pageAcive() == false ){ //MainTimeOut_2(); return; } TaskTimeOutNum -- ; if(TaskTimeOutNum < 0){ console.log("TaskTimeOutNum < 0"); clearInterval(MainPrecess_Timer) return; }else{ if(check_videoplayer_ready() == true) { console.log("这个页面成功找到H5播放器"); clearInterval(MainPrecess_Timer) MainProcess(); }else{ console.log("ERROR: 这个页面没找到H5播放器"); //MainTimeOut_2(); } } },1000); } }; /* window.onload = function(){ MainTimeOut(); } //------ 奇怪遭遇,window.onload 会在B站某些页面执行两次.... 属于油猴脚本多次执行(至少2次) document.onreadystatechange = function(){ if( document.readyState == "complete"){ document.onreadystatechange = function(){console.log("test-0066");}; MainTimeOut_2(); } }; */ window.addEventListener("load", init22, false); function init22(){ //alert("task start"); var tempTask_onload = setInterval(function(){ if(document.readyState == "complete"){ clearInterval(tempTask_onload); MainTimeOut_2() } },3000); }; // Code end before here //--------------------------------------------------------------------------------- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址