为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Html5 JavaScript

每次点开视频学习的时候,想给自己做一个时间计划,但视频没有总时长和章节时长,不知道当前这个课程需要多化多长时间;
所以就写了一个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}`);
}

效果

图片描述

点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消