您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
1、《不用长按就可以3倍速啦 支持 2.5 3 3.5 4 倍速(2022.11.x》 2、《给出每集剩下的时间-----《只有教程集合才有效》 鬼畜集合的标签是不同的所以无效的,有时候集合也会加载太快导致失败,第二次有了缓存基本就行了,暂时就不改了,我要学习java 55555 js我就是个小白,算是想要优化一下看教程 又觉得自己应该可以 就百度 来完成了(2023.1.18》3、《添加按钮控制《看进度》是否打开2023.1.20》4、《增加显示总时长2023.1.20 02:15》
当前为
// ==UserScript== // @name B站添加功能 // @description 1、《不用长按就可以3倍速啦 支持 2.5 3 3.5 4 倍速(2022.11.x》 2、《给出每集剩下的时间-----《只有教程集合才有效》 鬼畜集合的标签是不同的所以无效的,有时候集合也会加载太快导致失败,第二次有了缓存基本就行了,暂时就不改了,我要学习java 55555 js我就是个小白,算是想要优化一下看教程 又觉得自己应该可以 就百度 来完成了(2023.1.18》3、《添加按钮控制《看进度》是否打开2023.1.20》4、《增加显示总时长2023.1.20 02:15》 // @license AGPL License // @namespace https://mp.weixin.qq.com/s/zsVmSmd63OIxuoDbKGA-xg // @version 2023.1.20.4 // @author 仰晨 // @match *://www.bilibili.com/video/* // @icon https://www.jianfast.com/uploads/icon/12105/03/e0ed1515e1e7fde535fbd6a8f2e09cfb.ico // @grant none // ==/UserScript== //看进度 //------------给出每集剩下的时间-----《只有教程集合才有效》 鬼畜集合的标签是不同的所以无效的-------------------------======================================================= function lookJinDu(){var element=document.getElementById("multi_page").getElementsByClassName("duration"); //每一集是时间标签 var allElement = document.getElementsByClassName("list-box")[0].children; //视频集合下的全部标签 console.log("视频列表共有"+element.length); if(element.length==allElement.length){ //如果还没有进度就加进度 //定义一个数组放每个视频的秒数 var arr = []; var s_all = 0; //收集总时长-----//单纯是秒更好处理--------------------------------- for(let i=0;i<element.length;i++){ let timeStr = element[i].innerHTML; let s =0;//记录本次秒 //console.log(timeStr); let times=timeStr.split(":"); //console.log(times); if(times.length==2){ s=parseInt(times[0]*60); s+=parseInt(times[1]); }else if(times.length==3){ s=parseInt(times[0]*60*60); s+=parseInt(times[1]*60); s+=parseInt(times[2]); }else{ s=parseInt(times[0]); } s_all+=s; arr.push(s); } console.log("全部变成秒为"+s_all); //显示总时长在最前面2023.1.20 02:04 begin while (true){//放在循环里面防止变量冲突 let para = document.createElement("div");//创建一个li标签 para.innerText="总时长:"+parseInt(s_all/60/60)+"小时"+parseInt(s_all/60)+"分"+parseInt(s_all%60)+"秒 加油ヾ(◍°∇°◍)ノ゙"; para.style.color = '#d3d3d3';//设置字体颜色 para.setAttribute('class','jindu'); //设置标签属性 let list=document.getElementsByClassName("list-box")[0];//获取父标签---列表 let listIndex=list.getElementsByTagName("li")[0];// 获取父标签的第1个子元素 list.insertBefore(para,listIndex); // 在父标签的第一个子元素,前插入div标签 break;//结束循环 } var s_front=0; //遍历到的时间总和 //对每个 进行处理------------------------------------------------------------------------------------ for(let i=0;i<arr.length;i++){ s_front+=arr[i]; //console.log("进度:"+(s_front/s_all*100).toFixed(2)+"%") //转换为时分秒---------输出才用 内部用秒就好 let H=0; let m=0; let s=0; //剩下时间 s=s_all-s_front; m=parseInt(s/60); s=s%60; H=parseInt(m/60); m=m%60; //console.log("剩下时间:"+H+"小时"+m+"分"+s+"秒") //展示阶段------------------------------------------------------------------- //创建一个li标签 let para = document.createElement("div"); //设置标签内容 para.innerText="看完"+(i+1)+"集后 剩下时间:"+H+"小时"+m+"分"+s+"秒 进度:"+(s_front/s_all*100).toFixed(2)+"%"; //设置字体颜色 para.style.color = '#d3d3d3'; para.setAttribute('class','jindu'); //设置标签属性 //获取父标签---列表 let list=document.getElementsByClassName("list-box")[0]; //添加标签 let listIndex=list.getElementsByTagName("li")[i+1];// 获取父标签的第x个子元素 list.insertBefore(para,listIndex); // 在父标签的第一个子元素,前插入div标签 } document.getElementById("setText").innerText="已打开已看进度"; }else{//删除存在的进度标签 var jindu = document.getElementsByClassName("jindu"); for (let i = jindu.length-1; i>=0;i--){ jindu[i].remove(); } document.getElementById("setText").innerText="已关闭已看进度"; } }//看进度方法结束------------------------------------------------------------------------------------------------ window.onload=function() { function 插入倍速 (速度){ //创建一个p元素 var para = document.createElement("li"); para.setAttribute('class','bpx-player-ctrl-playbackrate-menu-item bpx-state-active'); //设置标签属性 para.setAttribute('data-value',速度); //设置标签属性 para.innerText=速度+"x"; //获取父标签 var div=document.getElementsByClassName("bpx-player-ctrl-playbackrate-menu")[0]; //添加标签 var one=div.firstChild;// 获取父标签的第一个子元素 div.insertBefore(para,one); // 在父标签的第一个子元素,前插入div标签 } 插入倍速(2.5); 插入倍速(3); 插入倍速(3.5); 插入倍速(4); //创建一个按钮 let bt = document.createElement("button"); //设置id 方便改内容 bt.setAttribute('id','setText'); //设置标签属性 //设置标签内容 bt.innerText="已打开已看进度"; //设置字体颜色 bt.style = "position: fixed; right: 0px;bottom: 20px;color:red;"; //插入父标签下 document.getElementById("app").appendChild(bt); bt.onclick= function(){lookJinDu();};//开关按钮 lookJinDu();//默认打开 }