mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
56 lines
2.0 KiB
TypeScript
56 lines
2.0 KiB
TypeScript
import { ComponentEntry } from '@/components/types'
|
|
import { defineComponentMetadata } from '@/components/define'
|
|
import { videoChange } from '@/core/observer'
|
|
import { select } from '@/core/spin-query'
|
|
import { matchUrlPattern } from '@/core/utils'
|
|
import { useScopedConsole } from '@/core/utils/log'
|
|
import { mediaListUrls, videoAndBangumiUrls } from '@/core/utils/urls'
|
|
|
|
const entry: ComponentEntry = async ({ settings: { options } }) => {
|
|
const console = useScopedConsole('展开弹幕列表')
|
|
const { getDanmakuView } = await import('../converter/danmaku-segment')
|
|
videoChange(async ({ aid, cid }) => {
|
|
if (mediaListUrls.some(url => matchUrlPattern(url)) && options.ignoreMediaList) {
|
|
return
|
|
}
|
|
const view = await getDanmakuView(aid, cid)
|
|
const danmakuCount = view.count
|
|
console.log(`当前弹幕量: ${danmakuCount}`)
|
|
if (danmakuCount !== null && danmakuCount > options.maxDanmakuCount) {
|
|
console.log(`超过了最大弹幕数量 ${options.maxDanmakuCount}, 跳过展开`)
|
|
return
|
|
}
|
|
const danmakuBox = await select('.bui-collapse-wrap')
|
|
if (dq('.multi-page-v1, .base-video-sections-v1') && options.ignoreWithEpisodes) {
|
|
console.log('检测到选集, 跳过展开')
|
|
return
|
|
}
|
|
if (danmakuBox && danmakuBox.classList.contains('bui-collapse-wrap-folded')) {
|
|
const button = (await select('.bui-collapse-header')) as HTMLDivElement
|
|
button?.click()
|
|
}
|
|
})
|
|
}
|
|
|
|
export const component = defineComponentMetadata({
|
|
name: 'expandDanmakuList',
|
|
displayName: '展开弹幕列表',
|
|
entry,
|
|
tags: [componentsTags.video],
|
|
options: {
|
|
ignoreMediaList: {
|
|
defaultValue: true,
|
|
displayName: '合集类页面不自动展开',
|
|
},
|
|
ignoreWithEpisodes: {
|
|
defaultValue: true,
|
|
displayName: '有选集时不自动展开',
|
|
},
|
|
maxDanmakuCount: {
|
|
defaultValue: 500,
|
|
displayName: '最大弹幕数量',
|
|
},
|
|
},
|
|
urlInclude: [...videoAndBangumiUrls, ...mediaListUrls],
|
|
})
|