视频单P总时长

多分P视频的每一P,在单P时长后面加上当P及当P之前所有视频的总时长

目前为 2023-09-14 提交的版本。查看 最新版本

// ==UserScript==
// @name         视频单P总时长
// @namespace    https://www.bilibili.com/video
// @version      1.0
// @description  多分P视频的每一P,在单P时长后面加上当P及当P之前所有视频的总时长
// @author       bird blue
// @match        https://www.bilibili.com/video/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // 创建一个观察器实例并定义回调函数
    let times = 0
    let functionUpdating = false
    const observer = new MutationObserver(function(mutationsList, observer) {
    // 在这里检查DOM变化并执行脚本
        console.log(`updated ${++times} times`)
        if (functionUpdating) {
            return
        }
        functionUpdating = true
        let videos = document.querySelectorAll('#multi_page>.cur-list>ul.list-box>li')
        let cumulativeDuration = 0
        for (let v of videos) {
            const singleDurationEl = v.querySelector('.duration')
            const timeParts = singleDurationEl.innerText.split(':').map(Number);
            const hours = timeParts.length >= 3 ? timeParts[timeParts.length - 3] : 0;
            const minutes = timeParts.length >= 2 ? timeParts[timeParts.length - 2] : 0;
            const seconds = timeParts.length >= 1 ? timeParts[timeParts.length - 1] : 0;

            cumulativeDuration += hours * 3600 + minutes * 60 + seconds;

            const cumulativeHours = Math.floor(cumulativeDuration / 3600);
            const cumulativeMinutes = Math.floor((cumulativeDuration % 3600) / 60);
            const cumulativeSeconds = cumulativeDuration % 60;

            const formattedAllDuration = `${String(cumulativeHours).padStart(2, '0')}:${String(cumulativeMinutes).padStart(2, '0')}:${String(cumulativeSeconds).padStart(2, '0')}`;

            singleDurationEl.innerText += ` | ${formattedAllDuration}`
        }
    });


    observer.observe(document.querySelector('#multi_page'), { childList: true, subtree: true });

})();

QingJ © 2025

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