计算B站分P视频在自己所看P数的视频剩余时长脚本

获取分P视频剩余时间

目前为 2022-10-28 提交的版本。查看 最新版本

// ==UserScript==
// @name         计算B站分P视频在自己所看P数的视频剩余时长脚本
// @namespace    YuuRa1n
// @version      0.3
// @description  获取分P视频剩余时间
// @author       YuuRa1n
// @match        https://www.bilibili.com/video/*
// @grant        none
// @require      https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// @license      AGPL-3.0
// ==/UserScript==

(function() {
    setTimeout(function(){
        let html = '<span><span class="item-text sumtime"></span></span>';
        $(".video-title").after(html);
        html = '<span><span class="item-text lefttime"></span></span>';
        $("span.copyright").after(html);
        calc();
    }, 1000)



    $("ul.list-box li").on("click", function(){
        calc();

    })


})();


function calc(){
    //获取当前播放视频位置(第几条)和总视频数
    const page = $(".cur-page").text();
    const pageNum = page.split("/");
    const curPageNum = parseInt(pageNum[0].substring(1));
    let minList = [];
    let secList = [];
    $("div.duration").each(function(){
        const time = $(this).text();
        const list = time.split(":");
        minList.push(list[0]);
        secList.push(list[1]);
    })

    //计算视频总时长
    const sumTime = calcLeftTime(minList, secList)

    $("span.sumtime").html("视频总时长:" + sumTime);

    //计算视频剩余时间
    const subminList = minList.slice(curPageNum - 1);
    const subsecList = secList.slice(curPageNum - 1);
    const leftTime = calcLeftTime(subminList, subsecList);
    $("span.lefttime").html("视频剩余时长:" + leftTime);
}


//给定时间数组和秒数组,数组长度必须相等,计算剩余时间
function calcLeftTime(minList, secList){
    if(minList.length != secList.length){
        return "计算失败";
    }else{
        let min = listsum(minList);
        let sec = listsum(secList);
        let m = sec / 60;

        let s = sec % 60;

        min += parseInt(m);

        let h = parseInt(min/60);
        m = min%60;

        return h+"小时"+m+"分钟"+s+"秒";
    }

}


function listsum(list){
    let sum = 0;
    for(let i =0;i<list.length;i++ ){
        sum += parseInt(list[i])
    }
    return sum;
}