1. 打开浏览器,任意收藏一个网址,将URL替换为下面的代码并保存

  2. 打开任意B站视频页面,点击这个收藏的网址,即可在页面右边看到如下窗口

javascript: (function () {
var hour = 0;
var minute = 0;
var second = 0;
var txt = document.getElementsByClassName("cur-page")[0].innerHTML;
var page = txt.match(/\/(\d+)/)[1];
function f1() {
hour = 0;
minute = 0;
second = 0;
var min = 0;
var sec = 0;
if (document.getElementById("divChild")) {
d.removeChild(document.getElementById("divChild"));
}
if (
parseInt(input1.value) >= 1 &&
parseInt(input1.value) <= page &&
parseInt(input2.value) <= page &&
parseInt(input1.value) <= parseInt(input2.value)
) {
for (
var i = parseInt(input1.value) - 1;
i < parseInt(input2.value);
i++
) {
var time = document.getElementsByClassName("duration")[i].innerHTML;
var t = time.match(/\d+/g);
if (t.length == 3) {
var h = t[0];
var m = t[1];
var s = t[2];
} else {
var h = 0;
var m = t[0];
var s = t[1];
}
hour += parseInt(h);
min += parseInt(m);
sec += parseInt(s);
}
hour += parseInt(min / 60);
minute = min - parseInt(min / 60) * 60 + parseInt(sec / 60);
second = sec - parseInt(sec / 60) * 60;
if (minute >= 60) {
hour += parseInt(minute / 60);
minute = minute - parseInt(minute / 60) * 60;
}
if (second >= 60) {
minute = parseInt(second / 60);
second = second - parseInt(second / 60) * 60;
}
if (input3.value != 1) {
var total = hour * 3600 + minute * 60 + second;
total = total / input3.value;
hour = parseInt(total / 3600);
minute = parseInt((total % 3600) / 60);
second = total % 60;
}
var d1 = document.createElement("div");
d1.style.cssText = "margin-top:15px";
d1.setAttribute("id", "divChild");
d.appendChild(d1);
var t1 = document.createTextNode(
"全" +
(parseInt(input2.value) - parseInt(input1.value) + 1) +
"集:" +
hour +
"时" +
minute +
"分" +
parseInt(second) +
"秒"
);
d1.appendChild(t1);
} else {
var d1 = document.createElement("div");
d1.style.cssText = "margin-top:15px";
d1.setAttribute("id", "divChild");
d.appendChild(d1);
var t1 = document.createTextNode("输入与实际集数不符");
d1.appendChild(t1);
}
}
function f2() {
document.querySelector("video").playbackRate = parseFloat(input4.value);
console.log(parseFloat(input4.value));
}
function over() {
btn.style.backgroundColor = "#E4E4E4";
}
function out() {
btn.style.backgroundColor = "#F4F4F4";
}
function over2() {
btn2.style.backgroundColor = "#E4E4E4";
}
function out2() {
btn2.style.backgroundColor = "#F4F4F4";
}
var body = document.body;
var d = document.createElement("div");
d.style.cssText =
"padding-top:15px;width:145px;height:180px;background-color:#F4F4F4;position:absolute;right:55px;top:218px;border:1px solid #00A1D6;color:#00A1D6;z-index:999;text-align:center;font-size:14px";
body.appendChild(d);
var d2 = document.createElement("div");
d.appendChild(d2);
var t2 = document.createTextNode("第");
d2.appendChild(t2);
var input1 = document.createElement("input");
input1.setAttribute("type", "number");
input1.style.cssText = "border: 1px solid deepskyblue;width:40px";
d2.appendChild(input1);
var t3 = document.createTextNode("集到");
d2.appendChild(t3);
var input2 = document.createElement("input");
input2.setAttribute("type", "number");
input2.style.cssText = "border: 1px solid deepskyblue;width:40px";
d2.appendChild(input2);
var t4 = document.createTextNode("集");
d2.appendChild(t4);
var t5 = document.createTextNode("倍速:");
d2.appendChild(t5);
var input3 = document.createElement("input");
input3.setAttribute("type", "number");
input3.style.cssText =
"border: 1px solid deepskyblue;width:50px;margin-top:15px;margin-right:10px";
input3.value = 1;
d2.appendChild(input3);
var t6 = document.createTextNode("倍");
d2.appendChild(t6);
var btn = document.createElement("input");
btn.setAttribute("type", "button");
btn.setAttribute("value", "计算");
btn.style.cssText =
"width:50px;margin-top:15px;border: 1px solid #00A1D6;cursor:pointer";
d.appendChild(btn);
btn.onclick = f1;
btn.onmouseover = over;
btn.onmouseout = out;
var d3 = document.createElement("div");
d.appendChild(d3);
var t7 = document.createTextNode("当前倍速:");
d3.appendChild(t7);
var input4 = document.createElement("input");
input4.setAttribute("type", "number");
input4.style.cssText =
"border: 1px solid deepskyblue;width:50px;margin-top:15px;margin-right:10px";
input4.value = document.querySelector("video").playbackRate;
d3.appendChild(input4);
var btn2 = document.createElement("input");
btn2.setAttribute("type", "button");
btn2.setAttribute("value", "修改");
btn2.style.cssText =
"width:50px;margin-top:15px;border: 1px solid #00A1D6;cursor:pointer";
d.appendChild(btn2);
btn2.onclick = f2;
btn2.onmouseover = over2;
btn2.onmouseout = out2;
})();

参考

  1. 【获取b站分集视频时长】合理安排学习时间
  2. 网页版B站上的视频怎么倍速播放? - Sole的回答 - 知乎

【B站】B站计算集数时长,调节任意倍速的更多相关文章

  1. PHP根据秒计算持续时长

    /** * 计算持续时长 * * @param int $second 秒数 * @return string $duration 5天10小时43分钟40秒 */ function second2d ...

  2. jq计算总时长

    1: <style> .item { width: 500px; height: 50px; margin: 0 auto; text-align: center; font-size: ...

  3. js计算在线时长

    后台传来毫秒,前台转换成对应的时分秒 //在线时长 function longTime(seconds){ //总秒数 //seconds=seconds/1000; //得到小时 var hour ...

  4. java中最简单的计算执行时长的方式

    日常在做一些性能测试的时候会通过执行时间来判断执行时长,java中最简单的方式如下: //开始时间 long startL= new Date().getTime(); //这里需要导入 java.u ...

  5. 使用Scala编写Spark程序求基站下移动用户停留时长TopN

    使用Scala编写Spark程序求基站下移动用户停留时长TopN 1. 需求:根据手机基站日志计算停留时长的TopN 我们的手机之所以能够实现移动通信,是因为在全国各地有许许多多的基站,只要手机一开机 ...

  6. Spark性能调优篇六之调节数据本地化等待时长

    数据本地化等待时长调节的优化 在项目该如何使用? 通过 spark.locality.wait 参数进行设置,默认为3s,6s,10s. 项目中代码展示: new SparkConf().set(&q ...

  7. js用img代替ajax js心跳 向服务器定时传送参数 主要计算用户在线时长

    html: <!doctype html><html><head><meta charset="utf-8"><title&g ...

  8. 发布.net 4.0的站点到IIS7.5下时无法访问

    现象: 初始发布.net 4.0站点到IIS7.5下时,各种配置都完毕的情况下依旧无法访问.首页显示站点目录结构(注:开启目录结构访问后会显示这个错误,否则会提示开启),访问次级目录提示:Handle ...

  9. hive计算网页停留时长

    hive表结构例如以下: create table pv_user_info( session_id string, user_id string, url string, starttime big ...

  10. iNeuOS工业互联网操作系统,脚本化实现设备运行时长和效率计算与统计

    目       录 1.      概述... 2 2.      实时采集开停状态... 2 3.      增加虚拟设备... 2 4.      脚本统计和计算设备运行时长... 4 5.    ...

随机推荐

  1. 【TS】class类和接口

    class可以用来做数据的存储与回显,能将页面的数据分离出来并提取到class内,函数也可以抽离到class,实例化class进行调用.ts中的class类与js的class类基本相同,不同点在于ts ...

  2. 关于vue keep-alive配合swiper的问题

    问题描述,首页优化使用keep-alive之后,从别的页面跳回来,swiper轮播不播放,查了好久资料,有的说要重新调用swiper的init方法进行初始化,等等,最终都没能解决问题,最终通过查看文档 ...

  3. 跳板攻击之:dns2tcp

    跳板攻击之:dns2tcp 目录 跳板攻击之:dns2tcp 1 dns2tcp简介 2 dns2tcp 食用说明 2.1 dns2tcpd 服务端 2.1.1 服务端参数说明 2.1.2 配置文件 ...

  4. Word 设置页眉、页脚、页码

    页眉:在 Word 文档中,每个页面的顶部区域为页眉.常用于显示文档的附加信息,可以插入时间.图形.公司微标.文档标题.文件名或作者姓名等. 页脚:页脚与页眉的作用相同,都可以作为显示文档的附加信息, ...

  5. 开源分布式任务调度系统就选:DolphinScheduler

    分布式任务调度这个话题是每个后端开发和大数据开发都会接触的话题.因为应用场景的广泛,所以有很多开源项目专注于解决这类问题,比如我们熟知的xxl-job. 那么今天要给大家推荐的则是另一个更为强大的开源 ...

  6. EF Core迁移 (provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的。)

    A connection was successfully established with the server, but then an error occurred during the log ...

  7. AttributeError: module 'requests' has no attribute 'get' 报错分析

    这个报错与代码时没有关系 当文件名与调用模块名重合时,系统找不到我们调用的requests模块. 在命名时,我们要注意不要重合.

  8. windows-sam文件

    sam文件是账号密码的数据库文件 存放位置C:\Windows\System32\Config\sam

  9. LCD1602液晶屏(续)

    从前面的分析中知道,在HD44780控制芯片忙的时候,是不能对其进行写入操作的,所以在写入指令或数据时都需要进行判忙的操作,其时序如下图所示(8位数据模式). 从上图中可看到,当HD44780在执行内 ...

  10. 使用 Fiddler Everywhere 进行抓包

    使用 Fiddler Everywhere 进行抓包 开启各项必备功能 在打开浏览器之前需要先开启LiveTraffic为Capturing 然后点击像芯片一样的东西叫Decode(蓝色为开启状态)这 ...