您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
B站H5播放器全屏时实时显示当前系统时间和播放进度
当前为
// ==UserScript== // @name BiibiliTimer // @version 2.1.6 // @description B站H5播放器全屏时实时显示当前系统时间和播放进度 // @author AnnAngela // @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/* // @compatible chrome 自Chrome 50开始兼容 // @icon data:image/png;base64,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 // @icon64 data:image/png;base64,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 // @run-at document-start // @grant unsafeWindow // @grant GM.setValue // @grant GM.getValue // @grant GM.deleteValue // @namespace https://gf.qytechs.cn/users/129402 // @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js // ==/UserScript== (function() { 'use strict'; /* 防止重复加载 */ if (unsafeWindow.BilibiliTimer) return; unsafeWindow.console.debug('%c' + GM.info.script.name + '@' + GM.info.script.version + ' by ' + GM.info.script.author + ' is running!', "padding: 32px 66px 32px 64px; line-height: 64px; background:url('" + GM.info.script.icon64 + "') top left no-repeat;"); unsafeWindow.BilibiliTimerUninit = false; unsafeWindow.BilibiliTimerGM = GM; 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.isBangumiEmbedded = location.host === 'www.bilibili.com' && location.pathname === '/blackboard/html5player.html' && top !== window && top.location.host === 'bangumi.bilibili.com';", " } catch(_) {", " BilibiliTimer.isBangumiEmbedded = false;", " }", " BilibiliTimer.realWindow = BilibiliTimer.isBangumiEmbedded ? top : window;", " 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: '.attend-button .right-part',", " autoHideButtonText: '.BilibiliTimerAutoHideButtonText',", " autoHideCheck: null,", " pageTitle: null,", " watchlaterPageTitle: null,", " watchlaterVideoTitle: null", " }, {", " container: '.bilibili-player-video-wrap',", " controller: '.bilibili-player-video-control',", " fullscreenSendbar: '.bilibili-player-video-sendbar.active',", " autoHideButton: '.bgray-btn-wrap .bgray-btn.show',", " autoHideButtonText: '.BilibiliTimerAutoHideButtonText',", " autoHideCheck: '.bilibili-player-no-cursor',", " pageTitle: '#plist .curPage ',", " 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'", " });", " 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: 'mid-part BilibiliTimerAutoHideButton',", " 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: '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.setValue('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' id='BilibiliTimerVideoTime'> - </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 = $('<div/>');", " autoHideButton.addClass(BilibiliTimer.classList.autoHideButton);", " autoHideButton.css(BilibiliTimer.isLive('width', 'height'), 'auto');", " autoHideButton.html('浮窗自动隐藏' + BilibiliTimer.isLive('|', '<hr/>'));", " var autoHideButtonText = $('<span/>');", " autoHideButtonText.addClass(BilibiliTimer.classList.autoHideButtonText);", " if (!BilibiliTimerGM.getValue('autoHidden')) {", " BilibiliTimerGM.setValue('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.selector.pageTitle).text();", " else if ($(BilibiliTimer.selector.watchlaterPageTitle)[0]) {", " description = '当前分页:<br>(稍后再看)';", " title = ($(BilibiliTimer.selector.watchlaterPageTitle).closest('li').index() + 1) + '、' + $(BilibiliTimer.selector.watchlaterPageTitle).text();", " }", " if ($(BilibiliTimer.selector.watchlaterVideoTitle)[0]) {", " if (!description) description = '当前视频:<br>(稍后再看)';", " title = ($(BilibiliTimer.selector.watchlaterVideoTitle).closest('li').index() + 1) + '、' + $(BilibiliTimer.selector.watchlaterVideoTitle).text() + '<br>' + (title ? '(' + title + ')' : '');", " }", " if (title) BilibiliTimer.timer.find('#BilibiliTimerTitle').html(title).parent().removeAttr('style');", " if (description) BilibiliTimer.timer.find('#BilibiliTimerTitleDescription').html(description);", " $(BilibiliTimer.realWindow.document.querySelector(BilibiliTimer.selector.autoHideButton)).before(BilibiliTimer.autoHideButton);", " 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', BilibiliTimer.restart.bind(BilibiliTimer));", " BilibiliTimer.autoHideButton.on('click', function() {", " if (BilibiliTimerGM.getValue('autoHidden')) {", " BilibiliTimerGM.setValue('autoHidden', false);", " BilibiliTimer.autoHideButtonText.text('OFF');", " } else {", " BilibiliTimerGM.setValue('autoHidden', true);", " BilibiliTimer.autoHideButtonText.text('ON');", " }", " });", " if (!BilibiliTimerGM.getValue('offset')) {", " BilibiliTimer.timer.css({", " right: '10px',", " top: '10px'", " }).css({", " left: BilibiliTimer.timer.offset().left + 'px',", " right: 'auto'", " });", " } else BilibiliTimer.timer.css(BilibiliTimerGM.getValue('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();", " 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.css({", " left: Math.max(Math.min(parseInt(timer.css('left')), maxLeft), 10),", " top: Math.max(Math.min(parseInt(timer.css('top')), maxTop), 10)", " });", " BilibiliTimerGM.setValue('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');", " if (!video.data('onListened')) {", " video.data('onListened', true);", " video.on({", " 'timeupdate.BilibiliTimer': BilibiliTimer.videoPlayListener.bind(BilibiliTimer),", " 'progress.BilibiliTimer': BilibiliTimer.videoProgressListener.bind(BilibiliTimer)", " });", " }", " };", " BilibiliTimer.autoHideWatcher = function BilibiliTimerAutoHideWatcher() {", " if (!BilibiliTimerGM.getValue('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.widthWatcher = function BilibiliTimerWidthWatcher() {", " var BilibiliTimer = window.BilibiliTimer;", " if (!BilibiliTimer || !BilibiliTimer.timer) return;", " if (BilibiliTimer.timer.find('.info-line').width() > BilibiliTimer.timer.width()) BilibiliTimer.widthCalc();", " };", " 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).children().each(function() {", " width += $(this).outerWidth(true);", " if (maxHeight < $(this).height()) maxHeight = $(this).height();", " });", " if (maxWidth < width) maxWidth = width;", " $(this).height(maxHeight);", " });", " timer.width(maxWidth);", " BilibiliTimer.widthSet = true;", " };", " 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) BilibiliTimer.timer.find('#BilibiliTimerVideoTime').text(BilibiliTimer.timeParse(curTime) + '/' + BilibiliTimer.timeParse(durTime));", " if (BilibiliTimer.timer.find('#BilibiliTimerVideoBufferedTime')[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('#BilibiliTimerVideoBufferedTime').text() === ' - ') video.trigger('progress');", " BilibiliTimer.timer.find('#BilibiliTimerVideoBufferedTimeRange').text((end - curTime).toFixed(0))", " }", " };", " BilibiliTimer.videoProgressListener = function BilibiliTimerVideoProgressListener(e) {", " 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;", " 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));", " }", " }", " 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, 1000);", " if (!BilibiliTimer.interval.widthWatcher) BilibiliTimer.interval.widthWatcher = setInterval(BilibiliTimer.widthWatcher, 5000);", " try {", " var video = $('video');", " setTimeout(function() {", " BilibiliTimer.videoPlayListener({ target: video[0] });", " BilibiliTimer.videoProgressListener({ target: video[0] });", " }, 100);", " } catch (_) {", " return;", " }", " };", " BilibiliTimer.restart = function BilibiliTimerRestart() {", " 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, BilibiliTimer.rebuild);", " else BilibiliTimer.rebuild();", " };", " BilibiliTimer.rebuild = function BilibiliTimerRebuild() {", " $('#BilibiliTimer').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;", "}", "#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;", "}", ".attention-btn-ctrl .mid-part {", " background-color: #4fc1e9;", " color: #fff;", " float: left;", " cursor: pointer;", " -webkit-user-select: none;", " width: 90px;", " height: 26px;", " padding: 0 5px;", " line-height: 26px;", " font-size: 12px;", " text-align: center;", " text-overflow: ellipsis;", " white-space: nowrap;", " overflow: hidden;", " box-sizing: border-box;", " box-shadow: 0 0 0.1em 0.1em #ddd;", "}" ].join('\n'); unsafeWindow.addEventListener('load', function() { var stylesheet = unsafeWindow.document.createElement('style'); stylesheet.innerText = css; unsafeWindow.document.body.appendChild(stylesheet) unsafeWindow.BilibiliTimerCode = code; unsafeWindow.eval([ "setInterval(function() {", " if (!window.BilibiliTimerUninit && (!window.BilibiliTimer || !window.BilibiliTimer.init)) eval(window.BilibiliTimerCode);", "}, 500);", ].join('\n')); }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址