BilibiliTimer

B站H5播放器全屏时实时显示当前系统时间和播放进度

目前為 2018-08-20 提交的版本,檢視 最新版本

// ==UserScript==
// @name         BilibiliTimer
// @version      2.7.1
// @description  B站H5播放器全屏时实时显示当前系统时间和播放进度
// @author       AnnAngela
// @namespace    https://gf.qytechs.cn/users/129402
// @mainpage     https://gf.qytechs.cn/zh-CN/scripts/30367-bilibilitimer
// @supportURL   https://gf.qytechs.cn/zh-CN/scripts/30367-bilibilitimer/feedback
// @license      GNU General Public License v3.0 or later
// @compatible   chrome 自Chrome 50开始兼容
// @match        *://www.bilibili.com/video/av*
// @match        *://www.bilibili.com/watchlater*
// @match        *://www.bilibili.com/html/*layer.htm*
// @match        *://www.bilibili.com/blackboard/*layer.htm*
// @match        *://www.bilibili.com/bangumi/play/*
// @match        *://live.bilibili.com/*
// @run-at       document-start
// @grant        unsafeWindow
// @grant        GM_addStyle
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAC4jAAAuIwF4pT92AAAIVklEQVR4Xu2bWYwVRRSGzyzIBYwbAmpwFzPigqCi0ZgoJooa3GKMGBg3VMAIcY3xQREFNW5xfXAF1AiKPrhEURl3E6O4srggojCCIIIgIuIM/t+cauZ6p293j3jDZZiHL5lkpk7956/q6upTNdbY2GgNDQ1bLHbjZ0tszKc/Z6FC7CmOF0PEKHGxOEv0F9uL6gxxNpbq0Ff/0PclYrQYOsa1obEiQ5wmrGrSbKuaOCsLlWKAuFNME3PFR2KquEzsJXKiIkOs/0pF6GOv0Cd9zxDzxGtVrg2NlRliNWE2cbbZhFlpdBX7i9FiuvhW/CrqxUwxWVwpjhPdRHWGmK2lOsQ+LvQ1JfT9k1gu5oo3zDWitWuGmJkN2FecKR4Vv4h1okH8HX5eKD4QY0SNyImKDHGzUhFi1oQ+6Ks+9I2GhvDzUnONaN03Q9zMBtDx2WKCuduNBawUC8SL4mr7f2dC/sgT+4XQ10prqYNZOdFca02G2K0yYHAIHmdANBMYlffFjaK3bfxMiEa+d4hJ7IXWPAPjDJgkzhH7ZYif2YAe4lBxg/gydPRXjABG5UfzmXCVGCC6m49ia42oDm0HhFgvhthxI48WNKENjWjdKUMfmQ1ATGfzqfWy+E6ssZZCmAmIYZTeNR+1g0QnUZmhn4ho5A8MMYi1IMT+O6ZftKAJbWhEa7bHL6MBCCKBfmKk+aPwlRWfCavMR+sla54JzKK0mcDvqsLfHmvZRx4tTP1LzTVWpvTTagMiuoidxXnmbvPqSZsJ74ixoo+lzwR+lwt/Oza0TRr5P8w1oOV8c21bJ8TPZAAiWHVZeI4Wp5ovgBeIEebv2YfFZ2KxWGsthRXOhNfFeDHKfAaNKMLI8DfjQ5tiIx9B32hAyyPm2oiDVjSjnRzIhZxaml9gANOGacoI1JoLeU68J+aI+eYbD6Yd7jMycatx/kxAJEYsCW2hvgjR75eENmstfuQj6BsNaIk2ZmhEK5rRTg7kQk4tH8FgQAfzhYNF5wxxnfkzVWf+fC0Sv5sLSkp4UxMZjlY0o73OPBdyIjdyJFdy3mAAzzYLz4XmGw2mFKPA9FtjzSPRYOVtQKQvMgLt5MAOkZzIjRzJlZybDOC5YHoMNX+O2Ocvs+Spt7lBLuTEgkmO5HqwsSbIAKbCEPNX1myx2tKf7c2N/LWCHHlrYEIHDODL6SZzd1hI2tLIF4IR5Mim6Wbjq1EG1Jp/WrJwtLWRLySaCcxych6KAXeYvzLWxTRgAeG1NMN8AXlGPFXmoBGtH5trj9tHMMvZXt+OAa/qh28sfuqzEcGcW8UJ4hDzr6yaMgVtaETrLeba2UnGGfC1eAUD2DTwyoub+u+bJ3+a+dcVW9lse+xNA9rQiFZ2gWineBL3KPxsLIgyYIX56hhnwJPiGLG76Git+6LbVKARrWg+xjyHOANYB37FABaFYgWG+0OgThk6LjfQjHZyKMwLyHktBkS7pzgD7hY72uYx8oWgGe3kEGeA7xhlwPoifwB3iu0ydFauoJ0ciuXX2G7ARhrAYrOD2EccZV7FAaoyPcU25hWeNKHFqAoxeoaYUXz66hX67pjQvuQGUGToK4aZl8leCNwmBpnX5jsntE+jc4gxKMSM4tPXRaHvbgntS24A3xEk/5j5ZmppgF0WG5FTLFlgGrQdFGK9mxefvh4Pfe+f0L7kBgwUT5sfUXFe8GegXnxo/pG1d0L7NGg7NsRamBd/eeiTvgcmtC+5AdTd+E5gv53/LYHI6JTmgIT2adB2QoiVX3xdF/qk78EJ7UtuQK152amwaotATOCL66CE9mnQdnKIlW9wVPGh79qE9iU3gFL0vIT2z5tXXtISLQZtn0uIT9/nJ7RvN8BKbECt+WdlYSElmqJ8m/dJaJ8Gj8CUECv/EYgKG/Rdm9C+5AawAH1iXsMvXARZqVkED0xon0bSIrgq9H1OQvuSG3CSeNZ8MfrNml9T1OQRx6FEr4T2afQKMVjtqe6sDfFXhD6nipMT2pfcAEZ3uHjCvJzO7RE2KhRSKLVxENEjoX0aHI+fHmIRc5k1b4Q47OAYLOktU3IDEEgJijM9NiXTjDLThFl3mVeRKFN1SWifRpcQAxP4rH1NUMKj9jc89N09oX3JDciZf3NTi+MjhV0Z9bjDzYsR21rWc/p4qkOMPcQRIf7A0FdN6DuX0L7kBpQ77QZYuwHtBrQbYO0GJBvAD8XK4rzPqbuV82lQMdCMdnKIS35DWTz/vm3hH90ndrPkd225guZdzXOIM8DvC8gAPirYX8cZQN2NTQ3Xz9Lu+JULaOxgfj7Y37xeGTf6HI0tw4ComBlnwNvmV09PNN9y5qy8TYgOR/n+QPP15jnEGcCB8BwMqDO/MRF3PD5fvBkCsRWl/r+LubvlCNr4gjzSfODQTg6FeZErN2KmY8C95kfIcRck+Oz8wbwkzSnrQ+JB8UCZgjYucaKVuwFoJ4c4A8j5HgzggIHS1Rorvhi2FaIrdH+a5zwMA/ik5NSFqbLc2v4lqWhWk3M/DNjK/PLgW+ZrAe60tZkQjTwVpXnmCyOnSk3X5DiAPMy8ukJl53trezOBXBh5ZjnrA7nyimy6KMnrgyvmrKJUdurMy1vR3eD8jVKxHWO5kK8RzX4LxHNh1eetwP8UkKtfq7fmy9KUn/hXk1rzQiQFR1ZKZgT7hCy3wzc1Ubl8tbnmeeY5kAs5nWs+28mVnM1yT8yx3KTZERWiWhwqLhL3ijoxSywWK8TvYnWZgjY0LhIzxfSc50Au5ERu5LghZxv3xVIb9/mSfCrFzqKvOEEMFcPFFeIacW2Zg8bLx7lmtJMDuZATuf0rX1u/fr3xD9RbKu0GYMCWzD+zDS/KNPfarwAAAABJRU5ErkJggg==
// @icon64       data:image/png;base64,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
// ==/UserScript==

(function() {
    'use strict';
    /* 防止重复加载 */
    if (unsafeWindow.BilibiliTimer) return;

    var script = { scriptMetaStr: GM_info.scriptMetaStr };
    GM_info.scriptMetaStr.split('\n').forEach(function(str) {
        var string = str.replace(/^\s*\/\/\s*/, '');
        var _temp = string.match(/^@(\S+)\s+(.+)$/);
        if (!_temp) return;
        var key = _temp[1],
            value = _temp[2].trim();
        if (script[key]) {
            script[key].push(value);
        } else {
            script[key] = [value];
        }
    });
    unsafeWindow.console.info('%c' + script.name[0] + '@' + script.version[0] + ' by ' + script.author[0] + ' is running!', "padding: 34px 66px 34px 66px; line-height: 64px; background:url('" + script.icon64[0] + "') top left no-repeat; background-position-y: 4px;");
    unsafeWindow.BilibiliTimerUninit = false;
    unsafeWindow.BilibiliTimerGM = {
        set: GM_setValue,
        get: GM_getValue,
        delete: GM_deleteValue,
        GM_info: script
    };
    unsafeWindow.BilibiliTimer = {};
    /*
     * 出于实现上的考虑,以下代码被保存为纯文本,并通过unsafeWindow.eval运行,以操作真实环境下的DOM节点
     */
    var code = [
        "(function() {",
        "    'use strict';",
        "    if (window.BilibiliTimerUninit || !window.jQuery) return false;",
        "    if (!String.prototype.includes) String.prototype.includes = function includes(s) {",
        "        return this.indexOf(s) !== -1;",
        "    };",
        "    var BilibiliTimer = window.BilibiliTimer || (window.BilibiliTimer = {});",
        "    var LF = String.fromCharCode(10);",
        "    BilibiliTimer._loop_count = 0;",
        "    BilibiliTimer.date = function bilibiliPlayerDate() {",
        "        var _date = new Date();",
        "        ['getDate', 'getFullYear', 'getHours', 'getMilliseconds', 'getMinutes', 'getMonth', 'getSeconds', 'getTime', 'getUTCDate', 'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds', 'getYear'].forEach(function(key) {",
        "            _date[key] = function() {",
        "                var result = Date.prototype[key].apply(_date, arguments);",
        "                if (key.includes('Month')) result++;",
        "                if (typeof result === 'number' && (result + '').length === 1) return '0' + result;",
        "                else return result + '';",
        "            };",
        "        });",
        "        return _date;",
        "    };",
        "    try {",
        "        BilibiliTimer.isEmbedded = location.host === 'www.bilibili.com' && ['/blackboard/html5player.html', '/blackboard/player.html'].includes(location.pathname) && top !== window && top.location.host.includes('bilibili.com');",
        "    } catch (_) {",
        "        BilibiliTimer.isEmbedded = false;",
        "    }",
        "    BilibiliTimer.realWindow = BilibiliTimer.isEmbedded ? top : window;",
        "    BilibiliTimer.isNewPlayPage = (location.pathname.substring(1).replace(RegExp('^video'), '').substring(1).match(RegExp('^av([0-9]+)')) || [0, -1])[1] !== -1 && document.cookie.includes('stardustvideo') && !!+document.cookie.match(RegExp('stardustvideo=([0-9]+)'))[1];",
        "    BilibiliTimer.isLive = function bilibiliIsLive(a, b) {",
        "        return location.host === 'live.bilibili.com' ? a !== undefined ? a : true : b !== undefined ? b : false;",
        "    };",
        "    BilibiliTimer.selector = BilibiliTimer.isLive({",
        "        container: '.bilibili-live-player-video-area',",
        "        controller: '.bilibili-live-player-video-controller',",
        "        fullscreenSendbar: null,",
        "        autoHideButton: '.attention-btn-ctnr > .left-part.dp-i-block.pointer.p-relative',",
        "        autoHideButtonText: '.BilibiliTimerAutoHideButtonText',",
        "        autoHideCheck: null,",
        "        pageTitle: null,",
        "        watchlaterPageTitle: null,",
        "        watchlaterVideoTitle: null,",
        "        bangumiTitle: null,",
        "        bangumiPartTitle: null",
        "    }, {",
        "        container: '.bilibili-player-video-wrap',",
        "        controller: '.bilibili-player-video-control',",
        "        fullscreenSendbar: '.bilibili-player-video-sendbar.active',",
        "        autoHideButton: BilibiliTimer.isNewPlayPage ? '#arc_toolbar_report > .ops' : '.bgray-btn-wrap .bgray-btn.show',",
        "        autoHideButtonText: '.BilibiliTimerAutoHideButtonText',",
        "        autoHideCheck: '.bilibili-player-no-cursor',",
        "        pageTitle: BilibiliTimer.isNewPlayPage ? '.cur-list .on' : '#v_multipage .item.on',",
        "        watchlaterPageTitle: '.bilibili-player-auxiliary-area .bilibili-player-watchlater-part-item[data-state-play=true] .bilibili-player-watchlater-plist-chapter',",
        "        watchlaterVideoTitle: '.bilibili-player-auxiliary-area .bilibili-player-watchlater-item[data-state-play=true] .bilibili-player-watchlater-info-title',",
        "        bangumiTitle: '#app .bangumi-info .info-title > a > h2',",
        "        bangumiPartTitle: '#app .bangumi-info .bangumi-list-wrapper .episode-list .episode-item.on'",
        "    });",
        "    BilibiliTimer.classList = BilibiliTimer.isLive({",
        "        timer: 'bilibili-live-player-video-info-container',",
        "        closeButton: 'bilibili-live-player-video-info-close',",
        "        panel: 'bilibili-live-player-video-info-panel',",
        "        restartButton: 'live-icon-reload',",
        "        autoHideButton: 'left-part dp-i-block pointer p-relative BilibiliTimerAutoHideButton BilibiliTimerAutoHideButton-live',",
        "        autoHideButtonText: 'BilibiliTimerAutoHideButtonText'",
        "    }, {",
        "        timer: 'bilibili-player-video-info-container',",
        "        closeButton: 'bilibili-player-video-info-close',",
        "        panel: 'bilibili-player-video-info-panel',",
        "        restartButton: 'bilibili-player-iconfont icon-24repeaton',",
        "        autoHideButton: BilibiliTimer.isNewPlayPage ? 'BilibiliTimerAutoHideButton' : 'bgray-btn show  BilibiliTimerAutoHideButton',",
        "        autoHideButtonText: 'BilibiliTimerAutoHideButtonText'",
        "    });",
        "    BilibiliTimer.closeButtonText = BilibiliTimer.isLive('x', '[x]');",
        "    BilibiliTimer.globallock = false;",
        "    BilibiliTimer.widthSet = false;",
        "    BilibiliTimer.onResizing = 0;",
        "    if (BilibiliTimer.selector.autoHideCheck) BilibiliTimer.mousemoveCount = 0;",
        "    BilibiliTimer.getControllerTop = function BilibiliTimerGetControllerTop() {",
        "        var controller = $(BilibiliTimer.selector.controller);",
        "        if (controller.closest('.mode-miniscreen')[0]) return $(window).height();",
        "        var _top = $(window).height() - controller.height();",
        "        var fullscreenSendbar = $(BilibiliTimer.selector.fullscreenSendbar);",
        "        if (fullscreenSendbar[0]) _top -= fullscreenSendbar.outerHeight(true);",
        "        return _top;",
        "    };",
        "    $(window).on('resize.BilibiliTimer', function() {",
        "        BilibiliTimer.onResizing = 1;",
        "    });",
        "    $(document).on({",
        "        'mousemove.BilibiliTimer': function(e) {",
        "            var BilibiliTimer = window.BilibiliTimer;",
        "            if (BilibiliTimer && BilibiliTimer.timer) {",
        "                if (BilibiliTimer.timer.data('onMousedown')) {",
        "                    var maxTop = BilibiliTimer.getControllerTop() - BilibiliTimer.timer.outerHeight() - 10;",
        "                    var maxLeft = $(window).width() - BilibiliTimer.timer.outerWidth() - 10;",
        "                    BilibiliTimer.timer.css({",
        "                        left: Math.max(Math.min(BilibiliTimer.timer.data('baseOffset').left + e.clientX, maxLeft), 10),",
        "                        top: Math.max(Math.min(BilibiliTimer.timer.data('baseOffset').top + e.clientY, maxTop), 10)",
        "                    });",
        "                    window.getSelection().removeAllRanges();",
        "                }",
        "                if (BilibiliTimer.selector.autoHideCheck) BilibiliTimer.mousemoveCount = 0;",
        "            }",
        "        },",
        "        'mouseup.BilibiliTimer': function(e) {",
        "            var BilibiliTimer = window.BilibiliTimer;",
        "            if (BilibiliTimer && BilibiliTimer.timer && BilibiliTimer.timer.data('onMousedown')) {",
        "                BilibiliTimer.timer.data('onMousedown', false);",
        "                BilibiliTimerGM.set('offset', {",
        "                    top: BilibiliTimer.timer.css('top'),",
        "                    left: BilibiliTimer.timer.css('left')",
        "                });",
        "            }",
        "        }",
        "    });",
        "    BilibiliTimer.template = {};",
        "    var timer = BilibiliTimer.template.timer = $('<div/>');",
        "    timer.attr('id', 'BilibiliTimer').addClass(BilibiliTimer.classList.timer);",
        "    var closeButton = BilibiliTimer.template.closeButton = $('<a/>');",
        "    closeButton.text(BilibiliTimer.closeButtonText).attr({",
        "        href: 'javascript:void(0);',",
        "        id: 'BilibiliTimerCloseButton'",
        "    });",
        "    closeButton.addClass(BilibiliTimer.classList.closeButton);",
        "    var restartButton = BilibiliTimer.template.restartButton = $('<a/>');",
        "    restartButton.attr({",
        "        href: 'javascript:void(0);',",
        "        id: 'BilibiliTimerRestartButton',",
        "        title: '如果发现浮窗出现问题,' + LF + '例如无法正常拖动,无法正常显示时间等,' + LF + '请点击该按钮重建浮窗尝试修复!'",
        "    });",
        "    restartButton.addClass(BilibiliTimer.classList.closeButton).addClass(BilibiliTimer.classList.restartButton);",
        "    var panel = BilibiliTimer.template.panel = $('<div/>');",
        "    panel.addClass(BilibiliTimer.classList.panel);",
        "    panel.append('<div class=\"info-line\"><span class=\"info-title\">系统时间:</span><span class=\"info-data\" id=\"BilibiliTimerNowTime\"> - </span></div>');",
        "    panel.append(BilibiliTimer.isLive('<div class=\"info-line\"><span class=\"info-title\">缓冲质量:</span><span class=\"info-data\">当前缓冲时长 <span id=\"BilibiliTimerVideoBufferedTimeRange\"> - </span>s</span></div>', '<div class=\"info-line\"><span class=\"info-title\">播放进度:</span><span class=\"info-data\"><span id=\"BilibiliTimerVideoTime\"> - </span>(已播放<span id=\"BilibiliTimerVideoTimePercents\"> - </span>%)</span></div><div class=\"info-line\"><span class=\"info-title\">加载进度:</span><span class=\"info-data\"><span id=\"BilibiliTimerVideoBufferedTime\"> - </span>(剩余缓冲时长<span id=\"BilibiliTimerVideoBufferedTimeRange\"> - </span>s,已缓冲<span id=\"BilibiliTimerVideoBufferedTimePercents\"> - </span>%)</span></div><div class=\"info-line\" style=\"display: none;\"><span class=\"info-title\" id=\"BilibiliTimerTitleDescription\">当前分页:</span><span class=\"info-data\" id=\"BilibiliTimerTitle\"> - </span></div>'));",
        "    var autoHideButton = BilibiliTimer.template.autoHideButton = $(BilibiliTimer.isNewPlayPage ? '<span/>' : '<div/>');",
        "    autoHideButton.addClass(BilibiliTimer.classList.autoHideButton);",
        "    autoHideButton.css(BilibiliTimer.isLive('width', BilibiliTimer.isNewPlayPage ? 'width' : 'height'), 'auto');",
        "    autoHideButton.html((BilibiliTimer.isNewPlayPage ? '<i class=\"van-icon-info_playnumber\"></i>' : '') + '浮窗自动隐藏' + BilibiliTimer.isLive(' | ', BilibiliTimer.isNewPlayPage ? ' | ' : '<hr>'));",
        "    var autoHideButtonText = $('<span/>');",
        "    autoHideButtonText.addClass(BilibiliTimer.classList.autoHideButtonText);",
        "    if (!BilibiliTimerGM.get('autoHidden')) {",
        "        BilibiliTimerGM.set('autoHidden', false);",
        "        autoHideButtonText.text('OFF');",
        "    } else {",
        "        autoHideButtonText.text('ON');",
        "    }",
        "    autoHideButton.append(autoHideButtonText);",
        "    BilibiliTimer.init = function BilibiliTimerInit() {",
        "        if (window.BilibiliTimerUninit) return false;",
        "        if (!$(BilibiliTimer.selector.container)[0] && ++BilibiliTimer._loop_count > 150) return BilibiliTimer.uninit();",
        "        BilibiliTimer.onResizing = 0;",
        "        BilibiliTimer.widthSet = false;",
        "        BilibiliTimer.timer = BilibiliTimer.template.timer.clone();",
        "        BilibiliTimer.closeButton = BilibiliTimer.template.closeButton.clone();",
        "        BilibiliTimer.restartButton = BilibiliTimer.template.restartButton.clone();",
        "        BilibiliTimer.panel = BilibiliTimer.template.panel.clone();",
        "        BilibiliTimer.autoHideButton = BilibiliTimer.template.autoHideButton.clone();",
        "        BilibiliTimer.timer.append(BilibiliTimer.closeButton).append(BilibiliTimer.restartButton).append(BilibiliTimer.panel);",
        "        var title = null,",
        "            description = null;",
        "        if ($(BilibiliTimer.selector.pageTitle)[0]) title = BilibiliTimer.isNewPlayPage ? $(BilibiliTimer.selector.pageTitle).children('a:visible').text().trim().replace(RegExp('^(P[0-9]+)'), '$1 ') : $(BilibiliTimer.selector.pageTitle).text();",
        "        else if ($(BilibiliTimer.selector.watchlaterPageTitle)[0]) {",
        "            description = '当前分页:<div id=\"BilibiliTimerTitleDescriptionLabel\">(稍后再看)</div>';",
        "            title = $(BilibiliTimer.selector.watchlaterVideoTitle).closest('li').index() + 1 + '、' + $(BilibiliTimer.selector.watchlaterVideoTitle).text() + '<br>' + ($(BilibiliTimer.selector.watchlaterPageTitle).closest('li').index() + 1) + '、' + $(BilibiliTimer.selector.watchlaterPageTitle).text();",
        "        } else if ($(BilibiliTimer.selector.watchlaterVideoTitle)[0]) {",
        "            description = '当前视频:<div id=\"BilibiliTimerTitleDescriptionLabel\">(稍后再看)</div>';",
        "            title = $(BilibiliTimer.selector.watchlaterVideoTitle).closest('li').index() + 1 + '、' + $(BilibiliTimer.selector.watchlaterVideoTitle).text();",
        "        } else if ($(BilibiliTimer.selector.bangumiTitle)[0]) {",
        "            description = '当前番剧:';",
        "            title = $(BilibiliTimer.selector.bangumiTitle).text();",
        "            if ($(BilibiliTimer.selector.bangumiPartTitle)[0]) {",
        "                var cloneNode = $(BilibiliTimer.selector.bangumiPartTitle).clone();",
        "                cloneNode.find('.ep-index').text(cloneNode.find('.ep-index').text() + ':');",
        "                title += '<br>' + '(' + cloneNode.text() + ')';",
        "            }",
        "        }",
        "        if (title) BilibiliTimer.timer.find('#BilibiliTimerTitle').html(title).parent().removeAttr('style');",
        "        if (description) BilibiliTimer.timer.find('#BilibiliTimerTitleDescription').html(description);",
        "        (function loop(BilibiliTimer) {",
        "            if (BilibiliTimer.isNewPlayPage && [",
        "                    $('#arc_toolbar_report > .ops > .like').text(),",
        "                    $('#arc_toolbar_report > .ops > .coin').text(),",
        "                    $('#arc_toolbar_report > .ops > .collect').text()",
        "                ].includes('--')) return setTimeout(loop, 200, BilibiliTimer);",
        "            $('.BilibiliTimerAutoHideButton').remove();",
        "            $(BilibiliTimer.realWindow.document.querySelector(BilibiliTimer.selector.autoHideButton))[BilibiliTimer.isNewPlayPage ? 'append' : 'before'](BilibiliTimer.autoHideButton);",
        "        })(BilibiliTimer);",
        "        BilibiliTimer.autoHideButtonText = BilibiliTimer.autoHideButton.find(BilibiliTimer.selector.autoHideButtonText);",
        "        BilibiliTimer.timer.on('mousedown', function(e) {",
        "            var baseX = Math.max(e.clientX, 0);",
        "            var baseY = Math.max(e.clientY, 0);",
        "            var baseOffsetX = Math.max(parseInt(BilibiliTimer.timer.css('left')), 0);",
        "            var baseOffsetY = Math.max(parseInt(BilibiliTimer.timer.css('top')), 0);",
        "            BilibiliTimer.timer.data({",
        "                baseOffset: {",
        "                    left: baseOffsetX - baseX,",
        "                    top: baseOffsetY - baseY",
        "                },",
        "                onMousedown: true",
        "            });",
        "        });",
        "        BilibiliTimer.closeButton.on('click', function() {",
        "            BilibiliTimer.globallock = true;",
        "            BilibiliTimer.timer.fadeOut(370);",
        "        });",
        "        BilibiliTimer.restartButton.on('click', function() {",
        "            BilibiliTimer.restart('User order', \"\");",
        "        });",
        "        BilibiliTimer.autoHideButton.on('click', function() {",
        "            if (BilibiliTimerGM.get('autoHidden')) {",
        "                BilibiliTimerGM.set('autoHidden', false);",
        "                BilibiliTimer.autoHideButtonText.text('OFF');",
        "            } else {",
        "                BilibiliTimerGM.set('autoHidden', true);",
        "                BilibiliTimer.autoHideButtonText.text('ON');",
        "            }",
        "        });",
        "        if (!BilibiliTimerGM.get('offset')) {",
        "            BilibiliTimer.timer.css({",
        "                left: 'auto',",
        "                right: '10px',",
        "                top: '10px'",
        "            });",
        "        } else BilibiliTimer.timer.css(BilibiliTimerGM.get('offset'));",
        "        $(BilibiliTimer.selector.container).append(BilibiliTimer.timer);",
        "        $(window).resize();",
        "    };",
        "    BilibiliTimer.globalWatcher = function BilibiliTimerGlobalWatcher() {",
        "        if (window.BilibiliTimerUninit) return false;",
        "        var timer = BilibiliTimer.timer;",
        "        if (!timer || !timer[0]) {",
        "            BilibiliTimer.init();",
        "            return;",
        "        }",
        "        if ($('object#player_placeholder, object#player_object')[0]) {",
        "            BilibiliTimer.uninit();",
        "            return;",
        "        }",
        "        if (!timer.closest('body')[0]) {",
        "            BilibiliTimer.restart('Timer did not exist in document.body', timer.closest('body')[0]);",
        "            return;",
        "        }",
        "        if (!!BilibiliTimer.realWindow.document.querySelector(':-webkit-full-screen')) {",
        "            if ((BilibiliTimer.selector.autoHideCheck ? !$(BilibiliTimer.selector.autoHideCheck)[0] : BilibiliTimer.mousemoveCount < 3) && BilibiliTimer.autoHidden) BilibiliTimer.autoHidden = false;",
        "            if (!BilibiliTimer.globallock && !BilibiliTimer.autoHidden) {",
        "                if (!timer.is(':visible')) timer.fadeIn();",
        "                if (BilibiliTimer.onResizing === 2) {",
        "                    BilibiliTimer.onResizing = 0;",
        "                    var maxTop = BilibiliTimer.getControllerTop() - timer.outerHeight() - 10;",
        "                    var maxLeft = $(window).width() - timer.outerWidth() - 10;",
        "                    timer.animate({",
        "                        left: Math.max(Math.min(parseInt(timer.css('left')), maxLeft), 10),",
        "                        top: Math.max(Math.min(parseInt(timer.css('top')), maxTop), 10)",
        "                    }, 370);",
        "                    BilibiliTimerGM.set('offset', {",
        "                        top: timer.css('top'),",
        "                        left: timer.css('left')",
        "                    });",
        "                } else if (BilibiliTimer.onResizing === 1) {",
        "                    BilibiliTimer.onResizing = 2;",
        "                }",
        "            }",
        "        } else {",
        "            BilibiliTimer.onResizing = 0;",
        "            BilibiliTimer.globallock = false;",
        "            timer.fadeOut();",
        "        }",
        "        if (timer.is(':visible')) {",
        "            var date = BilibiliTimer.date();",
        "            timer.find('#BilibiliTimerNowTime').text(date.getFullYear() + '-' + date.getMonth() + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds());",
        "            if (!BilibiliTimer.widthSet) BilibiliTimer.widthCalc();",
        "        }",
        "        var video = $('video')[0];",
        "        if (!video) {",
        "            BilibiliTimer.restart('No Video', $('video'));",
        "            return;",
        "        }",
        "        if (!video.dataset.isTrusted) {",
        "            video.dataset.isTrusted = true;",
        "            video.addEventListener('timeupdate', BilibiliTimer.videoPlayListener);",
        "            video.addEventListener('progress', BilibiliTimer.videoProgressListener);",
        "        }",
        "        if ((timer.find('#BilibiliTimerVideoTimePercents').text() + timer.find('#BilibiliTimerVideoBufferedTimeRange').text() + timer.find('#BilibiliTimerVideoTime').text()).includes('-')) {",
        "            BilibiliTimer.videoPlayListener({",
        "                target: video[0]",
        "            });",
        "            BilibiliTimer.videoProgressListener({",
        "                target: video[0]",
        "            });",
        "        }",
        "    };",
        "    BilibiliTimer.autoHideWatcher = function BilibiliTimerAutoHideWatcher() {",
        "        if (!BilibiliTimerGM.get('autoHidden')) return;",
        "        if (BilibiliTimer.selector.autoHideCheck ? $(BilibiliTimer.selector.autoHideCheck)[0] : BilibiliTimer.mousemoveCount >= 3) {",
        "            BilibiliTimer.autoHidden = true;",
        "            BilibiliTimer.timer.fadeOut(370);",
        "        }",
        "        if (BilibiliTimer.selector.autoHideCheck) BilibiliTimer.mousemoveCount++;",
        "    };",
        "    BilibiliTimer.lazyWatcher = function BilibiliTimerLazyWatcher() {",
        "        var BilibiliTimer = window.BilibiliTimer;",
        "        if (!BilibiliTimer || !BilibiliTimer.timer) return;",
        "        var timer = BilibiliTimer.timer;",
        "        if (BilibiliTimer.timer.find('.info-line').width() > BilibiliTimer.timer.width()) BilibiliTimer.widthCalc();",
        "        var flag, node;",
        "        if ($(BilibiliTimer.selector.pageTitle)[0]) {",
        "            if (!timer.find('#BilibiliTimerTitleDescription')[0]) {",
        "                flag = 'TitleDescription unset';",
        "                node = timer.find('#BilibiliTimerTitleDescription')[0];",
        "            } else if (timer.is(':visible') && timer.find('#BilibiliTimerTitleDescription').is(':hidden')) {",
        "                flag = 'TitleDescription invisible';",
        "                node = timer.find('#BilibiliTimerTitleDescription')[0]",
        "            }",
        "        } else if ($(BilibiliTimer.selector.watchlaterPageTitle)[0] || $(BilibiliTimer.selector.watchlaterVideoTitle)[0]) {",
        "            if (!timer.find('#BilibiliTimerTitleDescriptionLabel')[0]) {",
        "                flag = 'TitleDescriptionLabel unset';",
        "                node = timer.find('#BilibiliTimerTitleDescriptionLabel')[0];",
        "            } else if (timer.is(':visible') && timer.find('#BilibiliTimerTitleDescriptionLabel').is(':hidden')) {",
        "                flag = 'TitleDescriptionLabel invisible'",
        "                node = timer.find('#BilibiliTimerTitleDescriptionLabel')[0]",
        "            }",
        "        } else if ($(BilibiliTimer.selector.bangumiTitle)[0]) {",
        "            if (!timer.text().includes('当前番剧:')) {",
        "                flag = 'TitleDescriptionLabel did not include bangumi';",
        "                node = timer.find('#BilibiliTimerTitleDescription')[0];",
        "            }",
        "        }",
        "        if (flag) {",
        "            BilibiliTimer.restart(flag, node);",
        "            return;",
        "        }",
        "    };",
        "    BilibiliTimer.widthCalc = function BilibiliTimerWidthCalc() {",
        "        var BilibiliTimer = window.BilibiliTimer;",
        "        if (!BilibiliTimer || !BilibiliTimer.timer) return;",
        "        var timer = BilibiliTimer.timer;",
        "        var maxWidth = 0;",
        "        timer.find('.info-line').each(function() {",
        "            var width = 0,",
        "                maxHeight = 0;",
        "            $(this).css('height', 'unset').children().each(function() {",
        "                width += $(this).outerWidth(true);",
        "                var _height = $(this).height();",
        "                if ($(this).find('#BilibiliTimerTitleDescriptionLabel')[0]) _height += $(this).find('#BilibiliTimerTitleDescriptionLabel').height();",
        "                if (maxHeight < _height) maxHeight = _height;",
        "            });",
        "            if (maxWidth < width) maxWidth = width;",
        "            $(this).height(maxHeight);",
        "        });",
        "        timer.width(maxWidth);",
        "        BilibiliTimer.widthSet = true;",
        "        $(window).resize();",
        "    };",
        "    BilibiliTimer.timeParse = function BilibiliTimerTimeParse(time) {",
        "        time = parseInt(time);",
        "        var sec = time % 60,",
        "            min = (time - sec) / 60;",
        "        if (sec < 10) sec = '0' + sec;",
        "        return min + ':' + sec;",
        "    };",
        "    BilibiliTimer.videoPlayListener = function BilibiliTimerVideoPlayListener(e) {",
        "        if (!e.target) return;",
        "        var video = e.target;",
        "        var curTime = video.currentTime || 0;",
        "        var durTime = video.duration || 0;",
        "        if (!curTime && !durTime) return;",
        "        var BilibiliTimer = window.BilibiliTimer;",
        "        if (!BilibiliTimer || !BilibiliTimer.timer) return;",
        "        var timer = BilibiliTimer.timer;",
        "        timer.find('#BilibiliTimerVideoTime').text(BilibiliTimer.timeParse(curTime) + '/' + BilibiliTimer.timeParse(durTime));",
        "        if (timer.find('#BilibiliTimerVideoBufferedTime')[0]) {",
        "            var end;",
        "            try {",
        "                end = video.buffered.end(video.buffered.length - 1);",
        "            } catch (_) {",
        "                try {",
        "                    end = video.buffered.end(0);",
        "                } catch (_) {",
        "                    return;",
        "                }",
        "            }",
        "            if (timer.find('#BilibiliTimerVideoBufferedTime').text() === ' - ') $(video).trigger('progress');",
        "            timer.find('#BilibiliTimerVideoBufferedTimeRange').text((end - curTime).toFixed(0));",
        "        }",
        "        timer.find('#BilibiliTimerVideoTimePercents').text((curTime * 100 / durTime).toFixed(2));",
        "    };",
        "    BilibiliTimer.videoProgressListener = function BilibiliTimerVideoProgressListener(e) {",
        "        if (!e.target) return;",
        "        var video = e.target;",
        "        var curTime = video.currentTime || 0;",
        "        var durTime = video.duration || 0;",
        "        if (!curTime && !durTime) return;",
        "        var BilibiliTimer = window.BilibiliTimer;",
        "        if (!BilibiliTimer || !BilibiliTimer.timer) return;",
        "        var timer = BilibiliTimer.timer;",
        "        if (timer.find('#BilibiliTimerVideoBufferedTimeRange')[0]) {",
        "            var video = e.target,",
        "                end;",
        "            try {",
        "                end = video.buffered.end(video.buffered.length - 1);",
        "            } catch (_) {",
        "                try {",
        "                    end = video.buffered.end(0);",
        "                } catch (_) {",
        "                    return;",
        "                }",
        "            }",
        "            if (timer.find('#BilibiliTimerVideoBufferedTimeRange').text() === ' - ') BilibiliTimer.widthSet = false;",
        "            if (timer.find('#BilibiliTimerVideoTime').text() === ' - ') $(video).trigger('timeupdate');",
        "            timer.find('#BilibiliTimerVideoBufferedTime').text(BilibiliTimer.timeParse(end));",
        "            BilibiliTimer.timer.find('#BilibiliTimerVideoBufferedTimeRange').text((end - video.currentTime).toFixed(0));",
        "            timer.find('#BilibiliTimerVideoBufferedTimePercents').text((end * 100 / video.duration).toFixed(2));",
        "        }",
        "        timer.find('#BilibiliTimerVideoTimePercents').text((curTime * 100 / durTime).toFixed(2));",
        "    };",
        "    BilibiliTimer.start = function BilibiliTimerStart() {",
        "        if (window.BilibiliTimerUninit) return false;",
        "        if (location.host === 'bangumi.bilibili.com') return false;",
        "        if (!BilibiliTimer.interval) BilibiliTimer.interval = {};",
        "        if (!BilibiliTimer.interval.globalWatcher) BilibiliTimer.interval.globalWatcher = setInterval(BilibiliTimer.globalWatcher, 100);",
        "        if (!BilibiliTimer.interval.autoHideWatcher) BilibiliTimer.interval.autoHideWatcher = setInterval(BilibiliTimer.autoHideWatcher, 1e3);",
        "        if (!BilibiliTimer.interval.lazyWatcher) BilibiliTimer.interval.lazyWatcher = setInterval(BilibiliTimer.lazyWatcher, 5e3);",
        "        try {",
        "            var video = $('video');",
        "            setTimeout(function() {",
        "                BilibiliTimer.videoPlayListener({",
        "                    target: video[0]",
        "                });",
        "                BilibiliTimer.videoProgressListener({",
        "                    target: video[0]",
        "                });",
        "            }, 100);",
        "        } catch (_) {",
        "            return;",
        "        }",
        "    };",
        "    BilibiliTimer.restart = function BilibiliTimerRestart(reason, node) {",
        "        for (var i in BilibiliTimer.interval) {",
        "            if (BilibiliTimer.interval[i]) clearInterval(BilibiliTimer.interval[i]);",
        "        }",
        "        $('.BilibiliTimerAutoHideButton').remove();",
        "        if (window.BilibiliTimerUninit) return false;",
        "        var timer = $('#BilibiliTimer');",
        "        if (timer[0]) timer.fadeOut(370, function() { BilibiliTimer.rebuild(reason, node); });",
        "        else BilibiliTimer.rebuild(reason, node);",
        "    };",
        "    BilibiliTimer.rebuild = function BilibiliTimerRebuild(reason, node) {",
        "        console.groupCollapsed('BilibiliTimerRebuildTrace:', reason, node);",
        "        console.trace();",
        "        console.groupEnd();",
        "        $('#BilibiliTimer').remove();",
        "        $('.BilibiliTimerAutoHideButton').remove();",
        "        window.BilibiliTimer = undefined;",
        "        if (window.BilibiliTimerUninit) return false;",
        "        if (window.BilibiliTimerCode) setTimeout(function() {",
        "            eval(window.BilibiliTimerCode);",
        "        }, 0);",
        "    };",
        "    BilibiliTimer.uninit = function BilibiliTimerUninit() {",
        "        for (var i in BilibiliTimer.interval) {",
        "            if (BilibiliTimer.interval[i]) clearInterval(BilibiliTimer.interval[i]);",
        "        }",
        "        $('.BilibiliTimerAutoHideButton').remove();",
        "        $('#BilibiliTimer').remove();",
        "        window.BilibiliTimer = undefined;",
        "        window.BilibiliTimerUninit = true;",
        "    };",
        "    BilibiliTimer.start();",
        "})();"
    ].join('\n');
    var css = [
        "#BilibiliTimer {",
        "    cursor: move;",
        "    display: block;",
        "    transition-property: opacity, width;",
        "    transition-duration: .37s;",
        "    transition-timing-function: initial;",
        "    transition-delay: initial;",
        "}",
        ".bilibili-player-no-cursor #BilibiliTimer {",
        "    opacity: .73;",
        "    cursor: none;",
        "}",
        "#BilibiliTimer .info-title {",
        "    width: 6em;",
        "    margin: 0;",
        "}",
        "#BilibiliTimer .info-data {",
        "    max-width: 25em;",
        "    white-space: normal;",
        "    vertical-align: top;",
        "}",
        "#BilibiliTimerCloseButton.bilibili-live-player-video-info-close {",
        "    color: rgb(0, 0, 0);",
        "    padding: 0px;",
        "    height: 15px;",
        "    background: rgb(221, 221, 221);",
        "    width: 1em;",
        "    text-align: center;",
        "    top: 8px;",
        "}",
        "#BilibiliTimerRestartButton {",
        "    top: auto;",
        "    bottom: 10px;",
        "}",
        ".BilibiliTimerAutoHideButton-live {",
        "    -webkit-text-emphasis-color: white;",
        "    -webkit-text-fill-color: white;",
        "    -webkit-text-stroke-color: white;",
        "    background-color: rgb(35, 173, 229);",
        "    border: 0 solid white;",
        "    border-width: 0 1px;",
        "    caret-color: white;",
        "    color: white;",
        "    column-rule-color: white;",
        "    height: 22px;",
        "    line-height: 22px;",
        "    outline-color: white;",
        "    perspective-origin: 33px 11px;",
        "    text-align: center;",
        "    text-decoration: none solid white;",
        "    text-decoration-color: white;",
        "    transform-origin: 33px 11px;",
        "    vertical-align: middle;",
        "    padding: 0 .25em;",
        "}",
        ".bgray-btn-wrap .BilibiliTimer-hr {",
        "    border-style: inset;",
        "    border-width: 1px;",
        "    margin: 0.5em auto;",
        "    overflow: hidden;",
        "}",
        "#BilibiliTimerTitleDescription {",
        "    height: 100%;",
        "    position: relative;",
        "}",
        "#BilibiliTimerTitleDescriptionLabel {",
        "    width: 100%;",
        "    top: 50%;",
        "    left: 0;",
        "    position: absolute;",
        "}",
        ".BilibiliTimerAutoHideButton {",
        "    user-select: none;",
        "}",
        "#arc_toolbar_report > .ops > .more > .more-ops-list {",
        "    width: auto;",
        "}",
        "#arc_toolbar_report > .ops > .more > .more-ops-list .BilibiliTimerAutoHideButton {",
        "    padding: 0 1em;",
        "}",
    ].join('\n');
    unsafeWindow.addEventListener('load', function() {
        GM_addStyle(css);
        unsafeWindow.BilibiliTimerCode = code;
        unsafeWindow.eval(unsafeWindow.BilibiliTimerCode);
    });
})();

QingJ © 2025

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