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. SQL 实现全字段分组,每组取一条记录,记录满足:组内时间最大,组内不同类型数量求和

    1 SELECT 2 TT.CLASS_ID AS "classId", 3 TT.TEMPLATE_ID AS "templateId" , 4 TT.MSG ...

  2. sqllabs:less18-22

    在利用抓包工具进行抓包的时候,我们能看到很多的项,下面详细讲解每一项. HTTP 头部详解 1. Accept:告诉 WEB 服务器自己接受什么介质类型,/ 表示任何类型,type/* 表示该类型下的 ...

  3. Hbase学习二:Hbase数据特点和架构特点

    转载请注明出处: 1.Hbase数据特点 大:一个表可以有上亿行,上百万列. 面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索. 稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以 ...

  4. 钓鱼攻击之:Lnk 文件钓鱼

    钓鱼攻击之:Lnk 文件钓鱼 目录 钓鱼攻击之:Lnk 文件钓鱼 1 Lnk 钓鱼小试牛刀 2 Lnk 图标处理 3 进阶利用方式 3.1 PDF利用 3.2 txt利用,突破Lnk文件目标字符长度限 ...

  5. TNF拮抗剂的结构、功能与结核感染_Wallis2008

    中信国健临床通讯 2009年第2期 TNF拮抗剂的结构.功能与结核感染 Robert S. Wallis. THE LANCET Infectious Diseases. 2008; 8:601–61 ...

  6. Docker安装和卸载(centos)

    Docker安装和卸载 一,已安装Docker,卸载Docker 1.方法一 sudo yum remove docker \ docker-client \ docker-client-latest ...

  7. Postgresql12基于时间点恢复

    一.简介 数据库的PITR原理是依据之前的物理备份文件加上wal的预写日志模式备份做的恢复. 二.示例 1.数据库配置 wal_level = replica archive_mode = on ar ...

  8. marker的存储组---layerGroup

    1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="U ...

  9. SSM项目集成Redis

    1. 加入依赖 <!--redis--> <dependency> <groupId>redis.clients</groupId> <artif ...

  10. 多点DLT (Direct Linear Transformation) 算法

    阅读前可以先参看上一篇代数视觉博客: 四点DLT (Dierct Linear Transformation) 算法 对于大于4个点的数据点来进行 DLT 算法变换, 如果数据点的标注都十分准确,那么 ...