计算B站分P视频在自己所看P数的视频剩余时长

获取分P视频剩余时间

目前为 2023-02-24 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name 计算B站分P视频在自己所看P数的视频剩余时长
  3. // @namespace YuuRa1n
  4. // @version 0.5
  5. // @description 获取分P视频剩余时间
  6. // @author YuuRa1n
  7. // @match https://www.bilibili.com/video/*
  8. // @grant none
  9. // @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
  10. // @license MIT
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. setTimeout(function(){
  15. let html = '<span><span class="item-text sumtime"></span></span>';
  16. $(".video-title").after(html);
  17. html = '<span><span class="item-text lefttime"></span></span>';
  18. $("div.video-data-list").append(html);
  19. calc();
  20. }, 2000);
  21.  
  22. $("ul.list-box li").on("click", function(){
  23. calc();
  24. })
  25. })();
  26.  
  27.  
  28. function calc(){
  29. //获取当前播放视频位置(第几条)和总视频数
  30. const page = $(".cur-page").text();
  31. const pageNum = page.split("/");
  32. const curPageNum = parseInt(pageNum[0].substring(1),10);
  33. let hourList = [];
  34. let minList = [];
  35. let secList = [];
  36. $("div.duration").each(function(){
  37. const time = $(this).text();
  38. const list = time.split(":");
  39. if(list.length == 3){
  40. hourList.push(list[0]);
  41. minList.push(list[1]);
  42. secList.push(list[2]);
  43. }else{
  44. hourList.push(0);
  45. minList.push(list[0]);
  46. secList.push(list[1]);
  47. }
  48. })
  49.  
  50. //计算视频总时长
  51. const sumTime = calcLeftTime(hourList, minList, secList)
  52.  
  53. $("span.sumtime").html("视频总时长:" + sumTime);
  54.  
  55. //计算视频剩余时间
  56. const subHourList = hourList.slice(curPageNum - 1);
  57. const subminList = minList.slice(curPageNum - 1);
  58. const subsecList = secList.slice(curPageNum - 1);
  59. const leftTime = calcLeftTime(subHourList, subminList, subsecList);
  60. $("span.lefttime").html("剩余时长:" + leftTime);
  61. }
  62.  
  63. //给定时间数组和秒数组,数组长度必须相等,计算剩余时间
  64. function calcLeftTime(hourList, minList, secList){
  65. if(minList.length != secList.length){
  66. return "计算失败";
  67. }else{
  68. let hour = listsum(hourList);
  69. let min = listsum(minList);
  70. let sec = listsum(secList);
  71. let m = sec / 60;
  72.  
  73. let s = sec % 60;
  74.  
  75. min += parseInt(m,10);
  76.  
  77. let h = parseInt(min/60,10) + hour;
  78. m = min%60;
  79.  
  80. if(m<10)
  81. m="0"+ m;
  82. if(s<10)
  83. s="0"+ s;
  84. return h+":"+m+":"+s;
  85. }
  86. }
  87.  
  88. function listsum(list){
  89. let sum = 0;
  90. for(let i =0;i<list.length;i++ ){
  91. sum += parseInt(list[i],10)
  92. }
  93. return sum;
  94. }