Skip to content

Commit

Permalink
Merge pull request #60 from festoney8/dev
Browse files Browse the repository at this point in the history
mege dev to main, v3.4.1
  • Loading branch information
festoney8 committed Apr 7, 2024
2 parents 8989d4d + e253354 commit 456aebc
Show file tree
Hide file tree
Showing 4 changed files with 233 additions and 7 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# CHANGELOG

## 3.4.1

- 新增:小窗播放器 隐藏底边进度
- 新增:小窗播放器 隐藏弹幕
- 新增:小窗播放器 滚轮调节缩放

## 3.4.0

- 新增:视频过滤支持空间页(UP主主页、投稿列表、视频合集列表)
Expand Down
116 changes: 113 additions & 3 deletions src/rules/bangumi.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { GM_getValue, GM_setValue } from '$'
import { Group } from '../components/group'
import { CheckboxItem } from '../components/item'
import { debugRules as debug } from '../utils/logger'
import { debugRules as debug, error } from '../utils/logger'
import { isPageBangumi } from '../utils/page-type'

// GroupList
Expand Down Expand Up @@ -254,6 +255,115 @@ if (isPageBangumi()) {
defaultStatus: true,
itemCSS: `.bpx-player-shadow-progress-area {display: none !important;}`,
}),
// 小窗播放器 隐藏底边进度
new CheckboxItem({
itemID: 'video-page-hide-bpx-player-mini-mode-process',
description: '小窗播放器 隐藏底边进度',
defaultStatus: true,
itemCSS: `.bpx-player-container[data-screen=mini]:not(:hover) .bpx-player-mini-progress {display: none;}`,
}),
// 小窗播放器 隐藏弹幕
new CheckboxItem({
itemID: 'video-page-hide-bpx-player-mini-mode-danmaku',
description: '小窗播放器 隐藏弹幕',
itemCSS: `.bpx-player-container[data-screen=mini] .bpx-player-row-dm-wrap {visibility: hidden !important;}`,
}),
// 小窗播放器 滚轮调节大小
new CheckboxItem({
itemID: 'video-page-bpx-player-mini-mode-wheel-adjust',
description: '小窗播放器 滚轮调节大小',
itemFunc: () => {
const adjust = async () => {
try {
const insertCSS = (zoom: number) => {
const cssText = `
.bpx-player-container[data-screen=mini] {
height: calc(225px * ${zoom}) !important;
width: calc(400px * ${zoom}) !important;
}
.bpx-player-container[data-revision="1"][data-screen=mini],
.bpx-player-container[data-revision="2"][data-screen=mini] {
height: calc(180px * ${zoom}) !important;
width: calc(320px * ${zoom}) !important;
}
@media screen and (min-width:1681px) {
.bpx-player-container[data-revision="1"][data-screen=mini],
.bpx-player-container[data-revision="2"][data-screen=mini] {
height: calc(203px * ${zoom}) !important;
width: calc(360px * ${zoom}) !important;
}
}`
.replace(/\n\s*/g, '')
.trim()
const node = document.querySelector(
`html>style[bili-cleaner-css=video-page-bpx-player-mini-mode-wheel-adjust]`,
)
if (node) {
node.innerHTML = cssText
} else {
const style = document.createElement('style')
style.innerHTML = cssText
style.setAttribute('bili-cleaner-css', 'video-page-bpx-player-mini-mode-wheel-adjust')
document.documentElement.appendChild(style)
}
}
// 载入上次缩放
const oldZoom: number | undefined = GM_getValue(
'BILICLEANER_video-page-bpx-player-mini-mode-zoom',
)
oldZoom && insertCSS(oldZoom)

// 等player出现
let cnt = 0
const interval = setInterval(() => {
const player = document.querySelector('.bpx-player-container') as HTMLElement | null
if (player) {
clearInterval(interval)
// 判断鼠标位置,消除大播放器内下拉页面影响小窗大小的bug
let flag = false
player.addEventListener('mouseenter', () => {
if (player.getAttribute('data-screen') === 'mini') {
flag = true
}
})
player.addEventListener('mouseleave', () => {
flag = false
})
let lastZoom = oldZoom || 1
// 监听滚轮
player.addEventListener('wheel', (e) => {
if (flag) {
e.stopPropagation()
e.preventDefault()
const scaleSpeed = 5
let zoom = lastZoom - (Math.sign(e.deltaY) * scaleSpeed) / 100
zoom = zoom < 0.5 ? 0.5 : zoom
zoom = zoom > 3 ? 3 : zoom
if (zoom !== lastZoom) {
lastZoom = zoom
insertCSS(zoom)
GM_setValue('BILICLEANER_video-page-bpx-player-mini-mode-zoom', zoom)
}
}
})
} else {
cnt++
if (cnt > 20) {
clearInterval(interval)
}
}
}, 500)
} catch (err) {
error('adjust mini player size error')
error(err)
}
}
document.readyState === 'complete' ? adjust() : document.addEventListener('DOMContentLoaded', adjust)
},
callback: () => {
document.querySelector(`style[bili-cleaner-css=video-page-bpx-player-mini-mode-wheel-adjust]`)?.remove()
},
}),
]
bangumiGroupList.push(new Group('bangumi-player-control', '播放控制', playerControlItems))

Expand Down Expand Up @@ -748,10 +858,10 @@ if (isPageBangumi()) {
defaultStatus: true,
itemCSS: `[class*='navTools_navMenu'] [title='新版反馈'] {display: none !important;}`,
}),
// 隐藏 小窗播放器
// 隐藏 小窗播放开关
new CheckboxItem({
itemID: 'video-page-hide-sidenav-mini',
description: '隐藏 小窗播放器',
description: '隐藏 小窗播放开关',
itemCSS: `[class*='navTools_navMenu'] [title*='迷你播放器'] {display: none !important;}`,
}),
// 隐藏 客服, 默认开启
Expand Down
116 changes: 113 additions & 3 deletions src/rules/video.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { Group } from '../components/group'
import { CheckboxItem } from '../components/item'
import { debugRules as debug } from '../utils/logger'
import { debugRules as debug, error } from '../utils/logger'
import { matchAvidBvid, matchBvid } from '../utils/tool'
import { isPageBnj, isPagePlaylist, isPageVideo } from '../utils/page-type'
import { GM_getValue, GM_setValue } from '$'

/** BV号转AV号 */
const bv2av = () => {
Expand Down Expand Up @@ -449,6 +450,115 @@ if (isPageVideo() || isPagePlaylist() || isPageBnj()) {
-ms-text-stroke: 3px transparent;
}`,
}),
// 小窗播放器 隐藏底边进度
new CheckboxItem({
itemID: 'video-page-hide-bpx-player-mini-mode-process',
description: '小窗播放器 隐藏底边进度',
defaultStatus: true,
itemCSS: `.bpx-player-container[data-screen=mini]:not(:hover) .bpx-player-mini-progress {display: none;}`,
}),
// 小窗播放器 隐藏弹幕
new CheckboxItem({
itemID: 'video-page-hide-bpx-player-mini-mode-danmaku',
description: '小窗播放器 隐藏弹幕',
itemCSS: `.bpx-player-container[data-screen=mini] .bpx-player-row-dm-wrap {visibility: hidden !important;}`,
}),
// 小窗播放器 滚轮调节大小
new CheckboxItem({
itemID: 'video-page-bpx-player-mini-mode-wheel-adjust',
description: '小窗播放器 滚轮调节大小',
itemFunc: () => {
const adjust = async () => {
try {
const insertCSS = (zoom: number) => {
const cssText = `
.bpx-player-container[data-screen=mini] {
height: calc(225px * ${zoom}) !important;
width: calc(400px * ${zoom}) !important;
}
.bpx-player-container[data-revision="1"][data-screen=mini],
.bpx-player-container[data-revision="2"][data-screen=mini] {
height: calc(180px * ${zoom}) !important;
width: calc(320px * ${zoom}) !important;
}
@media screen and (min-width:1681px) {
.bpx-player-container[data-revision="1"][data-screen=mini],
.bpx-player-container[data-revision="2"][data-screen=mini] {
height: calc(203px * ${zoom}) !important;
width: calc(360px * ${zoom}) !important;
}
}`
.replace(/\n\s*/g, '')
.trim()
const node = document.querySelector(
`html>style[bili-cleaner-css=video-page-bpx-player-mini-mode-wheel-adjust]`,
)
if (node) {
node.innerHTML = cssText
} else {
const style = document.createElement('style')
style.innerHTML = cssText
style.setAttribute('bili-cleaner-css', 'video-page-bpx-player-mini-mode-wheel-adjust')
document.documentElement.appendChild(style)
}
}
// 载入上次缩放
const oldZoom: number | undefined = GM_getValue(
'BILICLEANER_video-page-bpx-player-mini-mode-zoom',
)
oldZoom && insertCSS(oldZoom)

// 等player出现
let cnt = 0
const interval = setInterval(() => {
const player = document.querySelector('.bpx-player-container') as HTMLElement | null
if (player) {
clearInterval(interval)
// 判断鼠标位置,消除大播放器内下拉页面影响小窗大小的bug
let flag = false
player.addEventListener('mouseenter', () => {
if (player.getAttribute('data-screen') === 'mini') {
flag = true
}
})
player.addEventListener('mouseleave', () => {
flag = false
})
let lastZoom = oldZoom || 1
// 监听滚轮
player.addEventListener('wheel', (e) => {
if (flag) {
e.stopPropagation()
e.preventDefault()
const scaleSpeed = 5
let zoom = lastZoom - (Math.sign(e.deltaY) * scaleSpeed) / 100
zoom = zoom < 0.5 ? 0.5 : zoom
zoom = zoom > 3 ? 3 : zoom
if (zoom !== lastZoom) {
lastZoom = zoom
insertCSS(zoom)
GM_setValue('BILICLEANER_video-page-bpx-player-mini-mode-zoom', zoom)
}
}
})
} else {
cnt++
if (cnt > 20) {
clearInterval(interval)
}
}
}, 500)
} catch (err) {
error('adjust mini player size error')
error(err)
}
}
document.readyState === 'complete' ? adjust() : document.addEventListener('DOMContentLoaded', adjust)
},
callback: () => {
document.querySelector(`style[bili-cleaner-css=video-page-bpx-player-mini-mode-wheel-adjust]`)?.remove()
},
}),
]
videoGroupList.push(new Group('video-player', '播放器', playerItems))

Expand Down Expand Up @@ -1264,10 +1374,10 @@ if (isPageVideo() || isPagePlaylist()) {

// 右下角
const sidebarItems = [
// 隐藏 小窗播放器
// 隐藏 小窗播放开关
new CheckboxItem({
itemID: 'video-page-hide-sidenav-right-container-live',
description: '隐藏 小窗播放器',
description: '隐藏 小窗播放开关',
itemCSS: `.fixed-sidenav-storage .mini-player-window {display: none !important;}
/* 适配watchlater, favlist */
.float-nav-exp .nav-menu .item.mini {display: none !important;}`,
Expand Down
2 changes: 1 addition & 1 deletion vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export default defineConfig({
userscript: {
name: 'bilibili 页面净化大师',
namespace: 'http://tampermonkey.net/',
version: '3.4.0',
version: '3.4.1',
description:
'净化 B站/哔哩哔哩 网页元素,去广告,BV号转AV号,播放器净化,过滤视频,过滤评论,提供300+项功能,定制自己的B站页面',
author: 'festoney8',
Expand Down

0 comments on commit 456aebc

Please sign in to comment.