继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

获取当前学习视频的总时长

慕盖茨8300218
关注TA
已关注
手记 1
粉丝 2
获赞 2

每次点开视频学习的时候,想给自己做一个时间计划,但视频没有总时长和章节时长,不知道当前这个课程需要多化多长时间;
所以就写了一个js片段代码,获取当前课程的章节时长和总时长的时间,来给自己做好学习的计划;

有需要的朋友可以如下操作:

请打开视频播放页如:https://coding.imooc.com/lesson/xxxxx.html#mid=xxxx,
并点击【章节】按钮,打开列表, 复制当前代码,直接在浏览器的控制台运行即可 ;(注意一定要打开章节,否则读不到相关的DOM节点)

// 计算imooc学习视频总时长
var list =  Array.prototype.slice.call(document.querySelector('.chapter-mini-list').children);

var children = [];

// 总时长
var minuteTotal = [] , secondsTotal = []

// 章节时长
var itemMinuteList = [], itemSecondsList = [];


for(var i = 0 ; i <= list.length; i++ ) {

   

    if (i === list.length) {
        getTime(itemMinuteList, itemSecondsList);
        itemMinuteList = [], itemSecondsList=[];
        continue;
    }

    
    var item = list[i];

    // 可能出现DIV
    if(item.tagName !== 'DT' && item.tagName !== 'DD') continue;

    
    // 找出章节名称
    if (item.tagName === 'DT'){
        // 找到下一个章节的时候,先清空上一个章节的内容
        minuteTotal =  minuteTotal.concat(itemMinuteList);
        secondsTotal = secondsTotal.concat(itemSecondsList);
        
        i!==0 && getTime(itemMinuteList, itemSecondsList);
        itemMinuteList = [], itemSecondsList=[];

        
        const name = item.querySelector('span').innerText;
       
        console.log(name);
        
        continue;
    }


    if(item.className === 'learning') {
        
        var name = item.querySelector('.name ').innerText;
        console.log(`${name}当前正在学习,无法统计该项时间`)
        
        continue;
    }


    var time = item.querySelector('.course-time')?.innerText;

    //过滤【作业】
    if(time === undefined) continue;

    var minute = 0, seconds = 0;
   
    itemMinuteList.push(parseInt(time.substr(1,2)));   // 当前分
    itemSecondsList.push(parseInt(time.substr(4,5)));  // 当前秒
}


console.log('总视频时长')
getTime(minuteTotal, secondsTotal)


function getTime(itemMinuteList, itemSecondsList){

    var minuteCount = itemMinuteList.reduce((sum, item) => sum + item, 0);
    var secondsCount = itemSecondsList.reduce((sum, item) => sum + item, 0);



    // 将所有的秒数转换成分钟
    const m = Math.floor( secondsCount / 60);
    const s = secondsCount % 60;
    
    minuteCount += m;

    const hour = Math.floor(minuteCount / 60);
    const minute = hour === 0 ? minuteCount: hour % 60;
    
    console.log(`${hour}:${minute}:${s}`);
}

效果

图片描述

打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP