// ==UserScript==
// @name b站多p视频时长统计,倍速播放
// @namespace http://tampermonkey.net/
// @version 0.6
// @description 视频总时长分集时长统计(多p),倍速播放
// @author Jackpapapapa
// @match *://www.bilibili.com/video/*
// @license MIT
// @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// @grant none
// @downloadURL https://update.greasyfork.icu/scripts/429887/b%E7%AB%99%E5%A4%9Ap%E8%A7%86%E9%A2%91%E6%97%B6%E9%95%BF%E7%BB%9F%E8%AE%A1%EF%BC%8C%E5%80%8D%E9%80%9F%E6%92%AD%E6%94%BE.user.js
// @updateURL https://update.greasyfork.icu/scripts/429887/b%E7%AB%99%E5%A4%9Ap%E8%A7%86%E9%A2%91%E6%97%B6%E9%95%BF%E7%BB%9F%E8%AE%A1%EF%BC%8C%E5%80%8D%E9%80%9F%E6%92%AD%E6%94%BE.meta.js
// ==/UserScript==
(function () {
"use strict"
//总集数时间
$("body").append(
'
'
)
$("#episode-index>div>button:nth-child(1)").click(function () {
if ($("#episode-index").children().is("#totaltime") === true) return
let $duration = $("#multi_page > div.cur-list > ul > li> a > div").find(
".duration"
)
let len = $duration.length
let tmin = 0,
thour = 0,
tsec = 0
for (let i = 0; i <= len - 1; i++) {
// console.log($duration[i].innerText.split(":"))
let duration_t = $duration[i].innerText.split(":")
if (duration_t.length == 2) {
tmin += parseInt(duration_t[0])
tsec += parseInt(duration_t[1])
} else if (duration_t.length == 3) {
thour += parseInt(duration_t[0])
tmin += parseInt(duration_t[1])
tsec += parseInt(duration_t[2])
}
}
tmin += parseInt(tsec / 60)
tsec = tsec % 60
thour += parseInt(tmin / 60)
tmin = tmin % 60
let ttime = thour + ":" + tmin + ":" + tsec
let ht = '剧集总时长为:' + ttime + "
"
$("#episode-index").append(ht)
})
//所选集数时间
function select(start, end) {
$("#episode-index>input#start").val(start)
$("#episode-index>input#end").val(end)
let hour = 0,
minute = 0,
second = 0
let duration_s = $("#multi_page > div.cur-list > ul > li> a > div").find(
".duration"
)
for (let pre = start - 1; pre <= end - 1; pre++) {
let duration_pre = duration_s[pre].innerText.split(":")
if (duration_pre.length == 2) {
minute += parseInt(duration_pre[0])
second += parseInt(duration_pre[1])
} else if (duration_pre.length == 3) {
hour += parseInt(duration_pre[0])
minute += parseInt(duration_pre[1])
second += parseInt(duration_pre[2])
}
console.log(minute);
}
minute += parseInt(second / 60)
second = second % 60
hour += parseInt(minute / 60)
minute = minute % 60
let time = hour + ":" + minute + ":" + second
$("#episode-index>#time").text("选择时长:" + time)
}
$("#episode-index>div>button:nth-child(2)").on("click", function () {
let start =
parseInt($("#episode-index>input#start").val()) <= 0
? 1
: parseInt($("#episode-index>input#start").val())
let end =
parseInt($("#episode-index>input#end").val()) >
$("#multi_page > div.cur-list > ul > li> a > div").find(".duration")
.length
? $("#multi_page > div.cur-list > ul > li> a > div").find(".duration")
.length
: parseInt($("#episode-index>input#end").val())
end = end < 0 ? 1 : end
select(start, end)
})
$("#episode-index>input#end").keydown(function (e) {
if (e.keyCode === 13) {
let start =
parseInt($("#episode-index>input#start").val()) <= 0
? 1
: parseInt($("#episode-index>input#start").val())
let end =
parseInt($("#episode-index>input#end").val()) >
$("#multi_page > div.cur-list > ul > li> a > div").find(".duration")
.length
? $("#multi_page > div.cur-list > ul > li> a > div").find(".duration")
.length
: parseInt($("#episode-index>input#end").val())
end = end < 0 ? 1 : end
select(start, end)
}
})
//倍速播放
function setRate(rate) {
$("video")[0].playbackRate = rate
}
$("#episode-index").append(
''
)
$("#episode-index>#playbackrate button").on("click", function () {
let rate = parseInt($("#episode-index>#playbackrate #rate").val())
setRate(rate)
console.log("click")
})
$("#episode-index>#playbackrate input").on("keydown", function (e) {
if (e.keyCode === 13) {
let rate = parseInt($("#episode-index>#playbackrate #rate").val())
setRate(rate)
}
})
})()