JavaScript获取B站分集视频标题及各集时长、累计时长

之前在学习B站分集视频时,为做笔记曾需要频繁复制标题文字,同时也需要知道视频时长,于是用js把标题及时长在控制台输出然后复制存为文本文件。

var box=document.getElementsByClassName('list-box')[0];
var boxtext=box.innerText;
var textline=boxtext.replace(/\n(?!P\d+)/g,' ');
console.log(textline);

使用方法:按下F12进入开发者工具,点击“Console”标题进入控制台,在光标闪动的输入处粘贴上面的代码并按下回车。
效果如下:
在这里插入图片描述
顺便说下该视频为任延宇老师主讲的理论力学(物理类),对物理/力学感兴趣的推荐看看~

最近时间有限,需要挑选部分视频学习,为了查看从开头到某集的累计时长,写了一个略长的代码。主要代码还是用在时间的转换上。

function hms2s(t){//'(hh:)mm:ss'格式时间转秒数
    var t1=t.split(':');
    var m=t1.length;
    var t2=Number(t1[m-1])+Number(t1[m-2])*60;
    if(m==3){t2+=Number(t1[m-3])*3600;}
    return t2;
}
function PrefixInteger(num, length) {//正整数添加前置零
    return (Array(length).join('0') + num).slice(-length);
}
function s2hms(s){//秒数转'(hh:)mm:ss'格式时间
    var st=PrefixInteger(s%60,2);
    st=PrefixInteger(Math.floor(s/60)%60,2)+':'+st;
    if(s>=3600){st=PrefixInteger(Math.floor(s/3600),2)+':'+st;}
    return st;
}
function timeadd(t1,t2){//'(hh:)mm:ss'格式时间相加
    return s2hms(hms2s(t1)+hms2s(t2));
}
var timeline='';
var timesum='00:00';
var t1=textline.split('\n');
for(var i=0;i<t1.length;i++){
    var t2=t1[i].split(' ');
    var p=t2[0];
    var sj=t2[t2.length-1];
    timesum=timeadd(timesum,sj);
    timeline+=p+' '+sj+' '+timesum+' '+t2.slice(1,-1).join(' ')+'\n';
}
console.log(timeline);

使用方法同上,效果如下:
在这里插入图片描述
实际输出的最后一行显示的累计时长是“21:30:06”,这和从首页搜索到该系列视频显示的总时长一致。
如果要知道某连续片段的视频总时长,可以计算它们末尾的累计时长减上一个视频的累计时长,如P15到P19的时长,可以计算为04:14:50-03:11:15=00:03:35。
当我们选中大段文字时,还有一个小技巧,首先点击一下想选中的首位置,然后滚动到末位置可见,按下Shift键,点击一下末位置,就能选中很长的一段文字了。

ps:当我完成这些想要写一个博客时,便去CSDN搜索有没有类似的博客,发现有人写过培养爬虫获取标题的版本:
提取B站视频的标题(就是提取网页的文字)_May_be_I_can的博客-CSDN博客_b站复制标题
当然用的不是JavaScript,但是我又看到了:
JSjavascript获取B站bilibili哔哩哔哩分P播放时长时间以及列表名称标题_chengzhijun93的博客-CSDN博客
不过他没有显示累计时长,直到我看到了一个时长方面功能更完备的博客:
【获取b站分集视频时长】合理安排学习时间_CharlynYanyan的博客-CSDN博客
而他实际是搬运自另一个网站的博客:
B站分集视频教程时长统计脚本 - 『编程语言区』
他在网页上插入了一个div标签,可以输入首尾集序号,播放速度,然后计算总时长,可以说功能非常完整了。

不过,他没有具体输出每一个视频分集的标题,于是我还有余地水一篇博客了。

【参考链接】
js 前面补0格式化format_a6680340的博客-CSDN博客 https://blog.csdn.net/a6680340/article/details/77917008

  • 11
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值