b站多p视频时长统计,倍速播放

视频总时长分集时长统计(多p),倍速播放

  1. // ==UserScript==
  2. // @name b站多p视频时长统计,倍速播放
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.6
  5. // @description 视频总时长分集时长统计(多p),倍速播放
  6. // @author Jackpapapapa
  7. // @match *://www.bilibili.com/video/*
  8. // @license MIT
  9. // @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function () {
  14. "use strict"
  15. //总集数时间
  16. $("body").append(
  17. '<div id="episode-index" style="width:17rem; font-size: 12px; padding: 6px; background-color: rgb(0, 161, 214); color: black; display: block; position: fixed; top:0; right: 0px; z-index: 2147483657;"><label for="start">开始集数:</label><input type="number" id="start" value="0"><br/><label for="end">结束集数:</label><input type="number" id="end" value="0"><div> <button>总时间</button><button id="confirm">确定</button></div><div id="time"></div></div>'
  18. )
  19. $("#episode-index>div>button:nth-child(1)").click(function () {
  20. if ($("#episode-index").children().is("#totaltime") === true) return
  21. let $duration = $("#multi_page > div.cur-list > ul > li> a > div").find(
  22. ".duration"
  23. )
  24. let len = $duration.length
  25. let tmin = 0,
  26. thour = 0,
  27. tsec = 0
  28. for (let i = 0; i <= len - 1; i++) {
  29. // console.log($duration[i].innerText.split(":"))
  30. let duration_t = $duration[i].innerText.split(":")
  31. if (duration_t.length == 2) {
  32. tmin += parseInt(duration_t[0])
  33. tsec += parseInt(duration_t[1])
  34. } else if (duration_t.length == 3) {
  35. thour += parseInt(duration_t[0])
  36. tmin += parseInt(duration_t[1])
  37. tsec += parseInt(duration_t[2])
  38. }
  39. }
  40. tmin += parseInt(tsec / 60)
  41. tsec = tsec % 60
  42. thour += parseInt(tmin / 60)
  43. tmin = tmin % 60
  44. let ttime = thour + ":" + tmin + ":" + tsec
  45. let ht = '<div id="totaltime">剧集总时长为:' + ttime + "</div>"
  46. $("#episode-index").append(ht)
  47. })
  48. //所选集数时间
  49. function select(start, end) {
  50. $("#episode-index>input#start").val(start)
  51. $("#episode-index>input#end").val(end)
  52. let hour = 0,
  53. minute = 0,
  54. second = 0
  55. let duration_s = $("#multi_page > div.cur-list > ul > li> a > div").find(
  56. ".duration"
  57. )
  58. for (let pre = start - 1; pre <= end - 1; pre++) {
  59. let duration_pre = duration_s[pre].innerText.split(":")
  60.  
  61. if (duration_pre.length == 2) {
  62. minute += parseInt(duration_pre[0])
  63. second += parseInt(duration_pre[1])
  64. } else if (duration_pre.length == 3) {
  65. hour += parseInt(duration_pre[0])
  66. minute += parseInt(duration_pre[1])
  67. second += parseInt(duration_pre[2])
  68. }
  69. console.log(minute);
  70. }
  71. minute += parseInt(second / 60)
  72. second = second % 60
  73. hour += parseInt(minute / 60)
  74. minute = minute % 60
  75. let time = hour + ":" + minute + ":" + second
  76. $("#episode-index>#time").text("选择时长:" + time)
  77. }
  78.  
  79. $("#episode-index>div>button:nth-child(2)").on("click", function () {
  80. let start =
  81. parseInt($("#episode-index>input#start").val()) <= 0
  82. ? 1
  83. : parseInt($("#episode-index>input#start").val())
  84. let end =
  85. parseInt($("#episode-index>input#end").val()) >
  86. $("#multi_page > div.cur-list > ul > li> a > div").find(".duration")
  87. .length
  88. ? $("#multi_page > div.cur-list > ul > li> a > div").find(".duration")
  89. .length
  90. : parseInt($("#episode-index>input#end").val())
  91. end = end < 0 ? 1 : end
  92. select(start, end)
  93. })
  94. $("#episode-index>input#end").keydown(function (e) {
  95. if (e.keyCode === 13) {
  96. let start =
  97. parseInt($("#episode-index>input#start").val()) <= 0
  98. ? 1
  99. : parseInt($("#episode-index>input#start").val())
  100. let end =
  101. parseInt($("#episode-index>input#end").val()) >
  102. $("#multi_page > div.cur-list > ul > li> a > div").find(".duration")
  103. .length
  104. ? $("#multi_page > div.cur-list > ul > li> a > div").find(".duration")
  105. .length
  106. : parseInt($("#episode-index>input#end").val())
  107. end = end < 0 ? 1 : end
  108. select(start, end)
  109. }
  110. })
  111.  
  112. //倍速播放
  113. function setRate(rate) {
  114. $("video")[0].playbackRate = rate
  115. }
  116. $("#episode-index").append(
  117. '<div id="playbackrate"><label for="rate">倍速<input type="number" id="rate"></label><button>确定</button></div>'
  118. )
  119. $("#episode-index>#playbackrate button").on("click", function () {
  120. let rate = parseInt($("#episode-index>#playbackrate #rate").val())
  121. setRate(rate)
  122. console.log("click")
  123. })
  124. $("#episode-index>#playbackrate input").on("keydown", function (e) {
  125. if (e.keyCode === 13) {
  126. let rate = parseInt($("#episode-index>#playbackrate #rate").val())
  127. setRate(rate)
  128. }
  129. })
  130. })()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址