// ==UserScript==
// @name Make BiliBili Grate Again
// @namespace https://www.kookxiang.com/
// @version 1.1.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)
}
// 视频裁切
if (location.href.startsWith('https://www.bilibili.com/video/')) {
customStyle += `
body[video-fit] .bilibili-player-video 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) {
localStorage.setItem('mbga-video-fit-mode', enabled ? 'Y' : 'N')
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').checked = localStorage.getItem('mbga-video-fit-mode') === 'Y'
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)
toggleMode(localStorage.getItem('mbga-video-fit-mode') === 'Y')
}
const style = document.createElement('style')
style.textContent = customStyle
document.head.appendChild(style)