您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在学习分p视频时,可以查看总时长分批时长
// ==UserScript== // @name bilibili------分p视频时长统计 // @namespace http://cssf.com/ // @version 0.2.1 // @description 在学习分p视频时,可以查看总时长分批时长 // @license GPL-3.0 // @author eniac // @match https://www.bilibili.com/video/** // @icon https://www.google.com/s2/favicons?sz=64&domain=bilibili.com // @grant none // ==/UserScript== (function() { 'use strict'; setTimeout(function(){ //计算总时长 function calTotalTime(){ const videoList=document.querySelectorAll('.cur-list .list-box .duration') let hour=0 let min=0 let second=0 videoList.forEach(item=>{ let text=item.innerText let arr=text.split(":") if (arr.length===3){ hour+=+arr[0] min+=+arr[1] second+=+arr[2] }else { min+=+arr[0] second+=+arr[1] } }) min=min+Math.floor(second/60) second%=60 hour=hour+Math.floor(min/60) min%=60 return `${hour}:${min}:${second}` } //计算剩余时长 function calRestTime(){ const liList=document.querySelectorAll('.cur-list .list-box li') let flag=false const newList=[] //从正在观看的条目往下计算 liList.forEach(item=>{ if(item.className&&'watched on'.includes(item.className)) flag=true if(flag){ newList.push(item) } }) let hour=0 let min=0 let second=0 newList.forEach(item=>{ let text=item.innerText let arr=text.split('\n')[2].split(':') if (arr.length===3){ hour+=+arr[0] min+=+arr[1] second+=+arr[2] }else { min+=+arr[0] second+=+arr[1] } }) min=min+Math.floor(second/60) second%=60 hour=hour+Math.floor(min/60) min%=60 return `${hour}:${min}:${second}` } //渲染数据 function addItem(totalTime='',restTime=''){ const multiPage=document.querySelector('#multi_page') let showSpan=document.querySelector('#multi_page .createSpan') if(!showSpan){ showSpan=document.createElement('span') showSpan.innerHTML='视频总时长:'+totalTime+' 剩余时长:'+restTime showSpan.className='createSpan' showSpan.style.left='0' showSpan.style.top='0' showSpan.style.color='red' showSpan.style.position='absolute' showSpan.style.transform='translateY(-20px)' multiPage.appendChild(showSpan) }else{ showSpan.innerHTML='视频总时长:'+totalTime+' 剩余时长:'+restTime } } //获取了总的视频时长 let totalTime=calTotalTime() let restTime=calRestTime() addItem(totalTime,restTime) const listBox=document.querySelector('.cur-list') listBox.addEventListener('click',function(){ let totalTime=calTotalTime() let restTime=calRestTime() addItem(totalTime,restTime) }) //播放视频就刷新时长统计 const video=document.querySelector('#playerWrap video') video.addEventListener('play',function (){ let totalTime=calTotalTime() let restTime=calRestTime() addItem(totalTime,restTime) }) },2000) })();