myBilibiliVideoTools.USER.JS

我本人在哔哩哔哩看视频的专用工具,内置多个功能,可以设置倍速,音量,全屏等,详情见图片.本脚本永久开源,永久免费。本脚本不得被用于任何的非法用途,仅能被合法的学习和使用。如果您安装了本脚本,产生的一切后果均由您承担,本人概不负责。本脚本的后续更新与否只取决于本人的心情。

目前為 2022-04-16 提交的版本,檢視 最新版本

// ==UserScript==
// @name         myBilibiliVideoTools.USER.JS
// @namespace    http://tampermonkey.net/
// @match        https://www.bilibili.com/video/*
// @icon         http://bilibili.com/favicon.ico
// @noframes
// @run-at       document-start
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_addStyle
// @compatible     firefox
// @description 我本人在哔哩哔哩看视频的专用工具,内置多个功能,可以设置倍速,音量,全屏等,详情见图片.本脚本永久开源,永久免费。本脚本不得被用于任何的非法用途,仅能被合法的学习和使用。如果您安装了本脚本,产生的一切后果均由您承担,本人概不负责。本脚本的后续更新与否只取决于本人的心情。 
// @license MIT
// @version 0.0.1.20220416055812
// ==/UserScript==
"use strict"
function _typeof(e) {
    "@babel/helpers - typeof"
    return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
        return typeof e
    } : function(e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
    })(e)
}~ function() {
    function e(t) {
        var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : !1
        unsafeWindow.vedio = t, t.addEventListener("ended", function() {
            _.click()
        }), t.addEventListener("loadeddata", function() {
            c(!0, !0, !0)
        }), t.addEventListener("myqualitychange", function() {
            var t = unsafeWindow.vedio,
                n = setInterval(function() {
                    var i, l, a = document.querySelector("video")
                    a && (i = t.src, l = a.src, l != i && "" != l && (clearInterval(n), t.dispatchEvent(new CustomEvent("myqualitychanged"), {
                        detail: {
                            newV: a
                        }
                    }), e(a, !0)))
                }, 1e3)
            }), t.addEventListener("myqualitychanged", function(e) {
            unsafeWindow.vedio = e.detail.newV
        }), n && c(!1, !1, !1)
    }

    function t() {
        return !(!document.fullscreen && !document.mozFullScreen)
    }

    function n() {
        var e = setInterval(function() {
            var t = document.querySelector("span.like")
            t && (t.className.indexOf("on") < 0 ? (clearInterval(e), t.click()) : clearInterval(e))
        }, 3e3)
        }

    function i(e) {
        return Function("return " + e)()
    }

    function l(e) {
        switch (e) {
            case 1:
                document.querySelector("#bilibiliPlayer").getAttribute("class").indexOf("webfullscreen") > 0 ? (document.querySelector("div.bilibili-player-video-web-fullscreen").click(), setTimeout(document.querySelector("button.bilibili-player-iconfont-web-fullscreen-on").click(), 500)) : document.querySelector("button.bilibili-player-iconfont-web-fullscreen-on").click()
                break
            case 2:
                L.click()
        }
    }

    function a() {
        var e = +GM_getValue("qualifyFlag", 64),
            t = document.createDocumentFragment(),
            n = document.querySelector(".bui-select-list"),
            i = n.children
        i.forEach(function(n) {
            var i = document.createElement("option")
            i.innerText = n.children[0].innerHTML, i.value = n.dataset.value, i.value == e && (i.selected = 1), t.append(i)
        }), H.innerHTML = "", H.append(t)
    }

    function c() {
        var e, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : !0,
            i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : !0,
            c = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : !0,
            o = +GM_getValue("myScreenFlag", 1)
        E.click(), l(o), 1 == t && n(), i && a(), c && (e = document.querySelector("ul.bilibili-player-video-btn-menu").children.length, e ? k.style.display = "block" : k.style.display = "none")
    }

    function o(e) {
        e.requestFullscreen()
    }
    var u, r, d, m, s, v, b, p, f, y, g, E, w, k, h, _, S, L, M, q, x, T, N, W, G, V, F, H, R, I
    for (unsafeWindow.GM_addStyle = GM_addStyle, unsafeWindow.GM_setValue = GM_setValue, unsafeWindow.GM_getValue = GM_getValue, GM_addStyle("\ndiv.bilibili-player-video-btn-widescreen{\ndisplay:none !important;\n}.myRadiosOnRate{\n    scale:1.5\n}.mbvt_div{\n	position: fixed;\n	top: 30% !important;\n	right: 0 !important;\n	z-index: 9999999;\n	background: black;\n	color: white;\n}.mbvt_items{\n	width: 60px;\n    color:initial;\n}.mbvt_items2 {\n	width: 60px;\n	background: black;\n	color: white;\n}.bilibili-player-video-info{\n    position: fixed;z-index:9999999;\n    top:50% !important;\n	left: 0 !important;\n	width: 120px!important;\n	text-align: left!important;\n    display:table!important;\n}.r-con {\n	width: 420px !important;\n	margin: 0 !important;\n	padding: 0 !important;\n}.bilibili-player-video-btn-menu-wrap {\n	width: 1000px !important;\n}"), u = document.createElement("div"), u.id = "myDiv0", u.className = "mbvt_div", u.innerText = "按N隐藏", r = document.createElement("div"), r.innerText = "my develop zone", r.className = "mbvt_div", d = document.createElement("div"), m = document.createElement("button"), m.className = "mbvt_items", m.innerHTML = "myInit", m.addEventListener("click", c), s = document.createElement("button"), s.className = "mbvt_items", s.innerHTML = "rate1X", s.addEventListener("click", function() {
        unsafeWindow.vedio.playbackRate = 1
    }), v = document.createElement("div"), v.id = "mySubDiv1", b = document.createElement("button"), b.className = "mbvt_items", b.innerHTML = "setRate:", b.addEventListener("click", function() {
        var e = p.value
        unsafeWindow.vedio.playbackRate = e, GM_setValue("myPlaybackRateFlag", e)
    }), p = document.createElement("input"), p.className = "mbvt_items", p.placeholder = "0-4", p.value = GM_getValue("myPlaybackRateFlag", 2), f = document.createElement("div"), y = document.createElement("div"), g = document.createElement("div"), E = document.createElement("button"), E.className = "mbvt_items", E.addEventListener("click", function() {
        var e = w.value
        document.querySelector("video").playbackRate = e / 100, unsafeWindow.vedio.volume = e / 100, b.click(), GM_setValue("volumeFlag", e)
    }), E.innerHTML = "setVolume:", w = document.createElement("input"), w.className = "mbvt_items", w.placeholder = "0-100", w.value = GM_getValue("volumeFlag", 100), k = document.createElement("div"), h = document.createElement("button"), h.innerHTML = "preEpisode", h.className = "mbvt_items", h.onclick = function() {
        document.querySelector(".bilibili-player-active").previousSibling.click()
    }, _ = document.createElement("button"), _.innerHTML = "nextEpisode", _.className = "mbvt_items", _.onclick = function() {
        document.querySelector(".bilibili-player-active").nextSibling.click()
    }, S = document.createElement("button"), S.innerHTML = "web全屏", S.setAttribute("class", "mbvt_items2"), S.addEventListener("mouseover", function() {
        document.querySelector("#bilibiliPlayer").getAttribute("class").indexOf("mode-webfullscreen") < 0 ? document.querySelector("button.bilibili-player-iconfont-web-fullscreen-off").click() : t() && setTimeout(function() {
            document.querySelector("button.bilibili-player-iconfont-web-fullscreen-on").click()
        }, 500), M.removeAttribute("disabled"), unsafeWindow.player.play()
    }), L = document.createElement("button"), L.innerHTML = "fullscreen", L.className = "mbvt_items", L.addEventListener("click", function() {
        o(unsafeWindow.vedio), unsafeWindow.vedio.focus()
    }), M = document.createElement("button"), M.innerHTML = " exit全屏 ", M.className = "mbvt_items", M.addEventListener("click", function() {
        document.querySelector("#bilibiliPlayer").getAttribute("class").indexOf("webfullscreen") > 0 ? document.querySelector("div.bilibili-player-video-web-fullscreen").click() : t() && document.exitFullscreen(), unsafeWindow.vedio.focus()
    }), q = document.createElement("div"), x = document.createElement("div"), T = document.createElement("div"), N = document.createElement("button"), N.innerHTML = "myDanmuku", N.className = "mbvt_items", N.addEventListener("click", function() {
        document.querySelector('input.bui-switch-input[aria-label="弹幕"]').click()
    }), W = [], G = 0; 2 > G;) V = document.createElement("input"), V.type = "radio", V.className = V.name = "myRadiosOnRate", V.value = G += .5, V.addEventListener("change", function(e) {
        var t = e.target,
            n = t.value
        unsafeWindow.vedio.playbackRate = n, t.parentElement.nextElementSibling.lastElementChild.value = n, GM_setValue("myPlaybackRateFlag", n), e.target.blur()
    }), W.push(V)
    F = document.createElement("button"), F.innerHTML = "get快照", F.className = "mbvt_items", F.addEventListener("click", function() {
        open("https://i0.hdslb.com/bfs/videoshot/" + unsafeWindow.cid + ".jpg", "_blank")
    }), document.onkeydown = function(e) {
        78 == e.keyCode && ("none" == u.style.display ? u.style.display = "block" : u.style.display = "none")
    }, H = document.createElement("select"), H.className = "mbvt_items", H.addEventListener("change", function() {
        var e, t = H.options[H.selectedIndex]
        t.selected = 1, e = t.value, i("document.querySelector('.bui-select-item[data-value=\"" + e + "\"]').click()"), GM_setValue("qualifyFlag", e), unsafeWindow.vedio.dispatchEvent(new CustomEvent("myqualitychange"), {
            detail: {
                key: "v"
            },
            bubbles: !0,
            cancelable: !0
        })
    }), R = document.createElement("select"), R.className = "mbvt_items", R.addEventListener("change", function() {
        var e, t = R.options[R.selectedIndex]
        t.selected = 1, e = t.value, GM_setValue("myScreenFlag", e), l(e)
    }), d.append(H, m), v.append(b, p), g.append(E, w), f.append(R, N), q.append(L, S), x.append(M, F), unsafeWindow.count = 1,
        function A() {
        var t, n, i, l, c, o, r = document.querySelector(".bilibili-player-video-info")
        if (!r) return unsafeWindow.count++, setTimeout(A, 1e3)
        t = document.querySelector("video"), n = +GM_getValue("myScreenFlag", 1), a(), i = {
            "default": 0,
            "小屏": 0,
            "web全屏": 1,
            "全屏": 2
        }, l = i.length
        for (c in i) o = document.createElement("option"), o.innerText = c, o.value = i[c], o.value == n && (o.selected = 1), R.appendChild(o)
        W.forEach(function(e) {
            T.append(e), e.insertAdjacentText("afterend", e.value + "X")
        }), document.querySelector("ul.bilibili-player-video-btn-menu").children.length && k.append(h, _), u.append(d, T, v, g, f, y, q, x, k), document.body.append(u), e(t, !0), unsafeWindow.count = 0
    }(), I = function(e, t) {
        var n
        return ["webkit", "moz", "ms", "o", ""].forEach(function(i) {
            if (!n) {
                "" === i && (t = t.slice(0, 1).toLowerCase() + t.slice(1))
                var l = _typeof(e[i + t])
                l + "" != "undefined" && (n = "function" === l ? e[i + t]() : e[i + t])
            }
        }), n
    }
}()

QingJ © 2025

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