Greasy Fork

Greasy Fork is available in English.

myBilibiliVideoTools.USER.JS-ones5-onuglifyjs2

我本人在哔哩哔哩看视频的专用工具,内置多个功能,可以设置倍速,音量,全屏等,详情见图片.本脚本永久开源,永久免费。本脚本不得被用于任何的非法用途,仅能被合法的学习和使用。如果您安装了本脚本,产生的一切后果均由您承担,本人概不负责。本脚本的后续更新与否只取决于本人的心情。警告:如果使用了此脚本后,切换清晰度就用这个,而不要用原始的,否则可能有未知问题;如果使用脚本途中切换网络,也会造成脚本失效,需要f5刷新网页.

当前为 2022-05-07 提交的版本,查看 最新版本

// ==UserScript==
// @name         myBilibiliVideoTools.USER.JS-ones5-onuglifyjs2
// @简称         mbvt
// @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 我本人在哔哩哔哩看视频的专用工具,内置多个功能,可以设置倍速,音量,全屏等,详情见图片.本脚本永久开源,永久免费。本脚本不得被用于任何的非法用途,仅能被合法的学习和使用。如果您安装了本脚本,产生的一切后果均由您承担,本人概不负责。本脚本的后续更新与否只取决于本人的心情。警告:如果使用了此脚本后,切换清晰度就用这个,而不要用原始的,否则可能有未知问题;如果使用脚本途中切换网络,也会造成脚本失效,需要f5刷新网页.
// @license MIT
// @version 0.0.1.20220507124135
// ==/UserScript==
-function() {
    var e = document.createElement("script");
    e.src = "http://greasyfork.icu/scripts/435697-myutils/code/myUtils.js?version=1044590",
        document.head.append(e), e.onload = function() {
        function e() {
            return !(!document.fullscreen && !document.mozFullScreen);
        }
        function n() {
            var e = setInterval(function() {
                var n = document.querySelector("span.like");
                n && (n.className.indexOf("on") < 0 ? (n.click(), clearInterval(e)) : clearInterval(e));
            }, 3e3);
        }
        function t(e) {
            return Function("return " + e)();
        }
        function i(e) {
            e.requestFullscreen();
        }
        var o = unsafeWindow, l = GM_setValue, a = GM_getValue, c = GM_addStyle;
        c("div.bilibili-player-video-btn-widescreen{\n            display:none !important;\n        }#mbvt_div0{\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        }"),
            o.count = 1, function d() {
            var c = document.querySelector(".bilibili-player-video-info");
            if (c) {
                for (var r = function U(e) {
                    var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : !1;
                    o.vedio = e, e.addEventListener("ended", function() {
                        R.click();
                    }), e.addEventListener("loadeddata", function() {
                        s(!0, !0, !0);
                    }), e.addEventListener("myqualitychange", function() {
                        var e = o.vedio, n = setInterval(function() {
                            var t = document.querySelector("video");
                            if (t) {
                                var i = e.src, o = t.src;
                                o != i && "" != o && (clearInterval(n), e.dispatchEvent(new CustomEvent("myqualitychanged"), {
                                    detail: {
                                        newV: t
                                    }
                                }), U(t, !0));
                            }
                        }, 1e3);
                    }), e.addEventListener("myqualitychanged", function(e) {
                        o.vedio = e.detail.newV;
                    }), n && s(!1, !1, !1);
                }, u = function(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:
                            C.click();
                    }
                }, m = function() {
                    var e = +a("qualifyFlag", 64), n = document.createDocumentFragment(), t = document.querySelector(".bui-select-list"), i = t.children;
                    i.forEach(function(t) {
                        var i = my.domAppendSon("option", n, t.children[0].innerHTML, "value", t.dataset.value);
                        i.value == e && (i.selected = 1);
                    }), M.innerHTML = "", M.append(n);
                }, s = function() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : !0, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : !0, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : !0, o = +a("myScreenFlag", 1);
                    if (x.click(), u(o), e && n(), t && m(), i) {
                        var l = document.querySelector("ul.bilibili-player-video-btn-menu").children.length;
                        l ? h.style.display = "block" : h.style.display = "none";
                    }
                }, p = my.domAppendBro("div", document.body, "按N隐藏", "id", "mbvt_div0"), v = my.domAppendSon("div", p), b = my.domAppendSon("div", p), y = my.domAppendSon("div", p), f = my.domAppendSon("div", p), g = my.domAppendSon("div", p), S = my.domAppendSon("div", p), k = my.domAppendSon("div", p), h = my.domAppendSon("div", p), A = my.domAppendSon("div", p), E = (my.domAppendSon("div", p),
                my.domAppendSon("button", v, "myInit", "class", "mbvt_items")), q = my.domAppendSon("button", k, "rate1X", "class", "mbvt_items"), w = my.domAppendSon("button", y, "setRate", "class", "mbvt_items"), _ = my.domAppendSon("input", y, "setRate:", "class", "mbvt_items", "placeholder", "0-4", "value", a("myPlaybackRateFlag", 2)), x = my.domAppendSon("button", f, "setVolume:", "class", "mbvt_items"), L = my.domAppendSon("input", f, "", "class", "mbvt_items", "placeholder", "0-100", "value", a("volumeFlag", 100)), F = my.domAppendSon("button", null, "preEpisode", "class", "mbvt_items"), R = my.domAppendSon("button", null, "nextEpisode", "class", "mbvt_items"), I = my.domAppendSon("button", A, "exit全屏", "class", "mbvt_items"), T = my.domAppendSon("button", S, "web全屏", "class", "mbvt_items2"), C = my.domAppendSon("button", S, "fullscreen", "class", "mbvt_items"), O = my.domAppendSon("button", g, "danmuku", "class", "mbvt_items"), P = my.domAppendSon("button", A, "get快照", "class", "mbvt_items"), M = my.domAppendSon("select", v, "", "class", "mbvt_items"), V = my.domAppendSon("select", g, "", "class", "mbvt_items"), j = my.domAppendSon("button", k, "getCover", "class", "mbvt_items"), z = [], G = 0; 2 > G; ) {
                    var H = my.domAppendSon("input", null, "", "type", "radio", "class", "myRadiosOnRate", "name", "myRadiosOnRate", "value", G += .5);
                    H.addEventListener("change", function(e) {
                        var n = e.target, t = n.value;
                        o.vedio.playbackRate = t, n.parentElement.nextElementSibling.lastElementChild.value = t,
                            l("myPlaybackRateFlag", t), e.target.blur();
                    }), z.push(H);
                }
                document.onkeydown = function(e) {
                    e.altKey || 78 != e.keyCode || ("none" == p.style.display ? p.style.display = "block" : p.style.display = "none");
                }, document.querySelector("ul.bilibili-player-video-btn-menu").children.length && h.append(F, R);
                var N = document.querySelector("video"), X = +a("myScreenFlag", 1);
                m();
                var B = {
                    "default": 0,
                    "小屏": 0,
                    "web全屏": 1,
                    "全屏": 2
                };
                B.length;
                for (var D in B) {
                    var K = document.createElement("option");
                    K.innerText = D, K.value = B[D], K.value == X && (K.selected = 1), V.appendChild(K);
                }
                return z.forEach(function(e) {
                    b.append(e), e.insertAdjacentText("afterend", e.value + "X");
                }), E.addEventListener("click", s), q.addEventListener("click", function() {
                    o.vedio.playbackRate = 1;
                }), w.addEventListener("click", function() {
                    var e = _.value;
                    o.vedio.playbackRate = e, l("myPlaybackRateFlag", e);
                }), x.addEventListener("click", function() {
                    var e = L.value;
                    document.querySelector("video").playbackRate = e / 100, o.vedio.volume = e / 100,
                        w.click(), l("volumeFlag", e);
                }), F.addEventListener("click", function() {
                    document.querySelector(".bilibili-player-active").previousSibling.click();
                }), R.addEventListener("click", function() {
                    document.querySelector(".bilibili-player-active").nextSibling.click();
                }), T.addEventListener("mouseover", function() {
                    document.querySelector("#bilibiliPlayer").getAttribute("class").indexOf("mode-webfullscreen") < 0 ? document.querySelector("button.bilibili-player-iconfont-web-fullscreen-off").click() : e() && setTimeout(function() {
                        document.querySelector("button.bilibili-player-iconfont-web-fullscreen-on").click();
                    }, 500), I.removeAttribute("disabled"), o.player.play();
                }), C.addEventListener("click", function() {
                    i(o.vedio), o.vedio.focus();
                }), I.addEventListener("click", function() {
                    document.querySelector("#bilibiliPlayer").getAttribute("class").indexOf("webfullscreen") > 0 ? document.querySelector("div.bilibili-player-video-web-fullscreen").click() : e() && document.exitFullscreen(),
                        o.vedio.focus();
                }), O.addEventListener("click", function() {
                    document.querySelector('input.bui-switch-input[aria-label="弹幕"]').click();
                }), P.addEventListener("click", function() {
                    open("https://i0.hdslb.com/bfs/videoshot/" + o.cid + ".jpg", "_blank");
                }), M.addEventListener("change", function() {
                    var e = M.options[M.selectedIndex], n = e.value;
                    e.selected = 1, t("document.querySelector('.bui-select-item[data-value=\"" + n + "\"]').click()"),
                        l("qualifyFlag", n), o.vedio.dispatchEvent(new CustomEvent("myqualitychange", {
                        detail: {},
                        bubbles: !0,
                        cancelable: !0
                    }));
                }), V.addEventListener("change", function() {
                    var e = V.options[V.selectedIndex], n = e.value;
                    e.selected = 1, l("myScreenFlag", n), u(n);
                }), j.addEventListener("click", function() {
                    o.open(o.vd.pic, "_blank");
                }), n() & r(N, !0), console.log("load completed, totally tried:" + o.count);
            }
            return console.log("not loaded, retry after 1000ms..."), o.count++, setTimeout(d, 1e3);
        }();
    };
}();