// ==UserScript== // @name Make BiliBili Great Again // @namespace https://www.kookxiang.com/ // @version 1.3.1 // @description useful tweaks for bilibili.com // @author kookxiang // @match https://*.bilibili.com/* // @grant unsafeWindow // @downloadURL none // ==/UserScript== let customStyle = ` .home-content { width: calc(100vw - 60px) !important; min-width: 1160px; } .home-content .center-panel { flex: 1 !important; } .home-content .center-panel .card .main-content { width: calc(100% - 120px) !important; } ` // 动态页面优化 if (location.host === "t.bilibili.com") { customStyle += ` #internationalHeader { position: sticky !important; top: 0; } .home-content .left-panel .scroll-content { top: 56px !important; } .home-content .right-panel .scroll-content { top: 64px !important; } ` } // 去广告 if (unsafeWindow.__INITIAL_STATE__ && unsafeWindow.__INITIAL_STATE__.locsData) { for (const key in unsafeWindow.__INITIAL_STATE__.locsData) { if (!Array.isArray(unsafeWindow.__INITIAL_STATE__.locsData[key])) { continue; } unsafeWindow.__INITIAL_STATE__.locsData[key] = unsafeWindow.__INITIAL_STATE__.locsData[key].filter(x => !x.is_ad) } } // 修复文章区复制 if (location.href.startsWith('https://www.bilibili.com/read/cv')) { unsafeWindow.original.reprint = "1" document.querySelector('.article-holder').classList.remove("unable-reprint") document.querySelector('.article-holder').addEventListener('copy', e => e.stopImmediatePropagation(), true) } // 去 P2P CDN if (location.href.startsWith('https://www.bilibili.com/video/') || location.href.startsWith('https://www.bilibili.com/bangumi/play/')) { let cdnDomain try { [ cdnDomain ] = document.head.innerHTML.match(/up[\w-]+\.bilivideo\.com/) } catch(e) {} (function(open) { unsafeWindow.XMLHttpRequest.prototype.open = function() { try { const urlObj = new URL(arguments[1]); if (urlObj.hostname.endsWith(".mcdn.bilivideo.cn")) { urlObj.host = cdnDomain || 'upos-sz-mirrorcoso1.bilivideo.com' urlObj.port = 443 console.warn(`更换视频源: ${urlObj.host}`); arguments[1] = urlObj.toString() } else if (urlObj.hostname.endsWith(".szbdyd.com")) { urlObj.host = urlObj.searchParams.get('xy_usource'); urlObj.port = 443; console.warn(`更换视频源: ${urlObj.host}`); arguments[1] = urlObj.toString(); } } finally { return open.apply(this, arguments) } }; })(unsafeWindow.XMLHttpRequest.prototype.open); } // 视频裁切 if (location.href.startsWith('https://www.bilibili.com/video/')) { customStyle += ` body[video-fit] .bilibili-player-video video, body[video-fit] .bilibili-player-video bwp-video { object-fit: cover; } .bilibili-player-video-btn-setting-left-fit-mode { display: flex; width: 100%; height: 32px; line-height: 32px; } .bilibili-player-video-btn-setting-box.bui-panel .bui-panel-wrap, .bilibili-player-video-btn-setting-box.bui-panel .bui-panel-item { min-height: 172px !important; } ` let timer; function toggleMode(enabled) { if (enabled) { document.body.setAttribute('video-fit', '') } else { document.body.removeAttribute('video-fit') } } function injectButton() { if (!document.querySelector('.bilibili-player-video-btn-setting-left')) { return } clearInterval(timer) const parent = document.querySelector('.bilibili-player-video-btn-setting-left') const item = document.createElement('div') item.className = 'bilibili-player-video-btn-setting-left-fit-mode bui bui-switch' item.innerHTML = '' parent.insertBefore(item, document.querySelector('.bilibili-player-video-btn-setting-left-more')) document.querySelector('.bilibili-player-video-btn-setting-left-fit-mode input').addEventListener('change', e => toggleMode(e.target.checked)) document.querySelector('.bilibili-player-video-btn-setting-box .bui-panel-item').style.height = '' } timer = setInterval(injectButton, 200) } const style = document.createElement('style') style.textContent = customStyle document.head.appendChild(style)