mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
Split remember speed into options (#2746)
This commit is contained in:
parent
48fcf5297f
commit
d60eca961c
File diff suppressed because one or more lines are too long
@ -3,7 +3,6 @@ import { videoChange } from '@/core/observer'
|
||||
import {
|
||||
addListener,
|
||||
calcOrder,
|
||||
enabled,
|
||||
extendedAgent,
|
||||
formatSpeedText,
|
||||
getAid,
|
||||
@ -43,7 +42,7 @@ const getRememberSpeed = (aid?: string) => {
|
||||
|
||||
const getFallbackVideoSpeed = () => {
|
||||
// 如果组件被启用才使用存储的后备值
|
||||
if (enabled) {
|
||||
if (options.remember) {
|
||||
return parseFloat(options.speed)
|
||||
}
|
||||
return null
|
||||
@ -231,8 +230,12 @@ export const createController = _.once(() => {
|
||||
}
|
||||
containerElement = tmpContainerElement
|
||||
videoElement = tmpVideoElement
|
||||
nameBtn = containerElement.querySelector(extendedAgent.custom.speedNameBtn.selector) as HTMLButtonElement
|
||||
menuListElement = containerElement.querySelector(extendedAgent.custom.speedMenuList.selector) as HTMLElement
|
||||
nameBtn = containerElement.querySelector(
|
||||
extendedAgent.custom.speedNameBtn.selector,
|
||||
) as HTMLButtonElement
|
||||
menuListElement = containerElement.querySelector(
|
||||
extendedAgent.custom.speedMenuList.selector,
|
||||
) as HTMLElement
|
||||
// 试图插入扩展的倍速菜单项
|
||||
await extendListIfAllow()
|
||||
// 为每一个倍速菜单项附加 dataset
|
||||
@ -259,9 +262,9 @@ export const createController = _.once(() => {
|
||||
menuListElement.querySelector(`${extendedAgent.custom.speedMenuItem.selector}.extended${extendedAgent.custom.active.selector}`)?.classList.remove(activeClassName)
|
||||
}
|
||||
// 记忆
|
||||
// - `enabled` 表示是否启用记忆
|
||||
// - `options.remember` 表示是否启用记忆
|
||||
// - `options.individualRemember` 表示是否启用细化到视频级别的记忆
|
||||
if (enabled) {
|
||||
if (options.remember) {
|
||||
if (options.individualRemember) {
|
||||
rememberSpeed(
|
||||
speed,
|
||||
@ -284,7 +287,7 @@ export const createController = _.once(() => {
|
||||
setTimeout(() => {
|
||||
setVideoSpeed(
|
||||
(
|
||||
enabled
|
||||
options.remember
|
||||
&& options.individualRemember
|
||||
&& getRememberSpeed()
|
||||
)
|
||||
@ -294,6 +297,14 @@ export const createController = _.once(() => {
|
||||
}, 100)
|
||||
})
|
||||
return {
|
||||
getSupportedRates, getExtendedSupportedRates, setVideoSpeed, videoSpeed, getRememberSpeed, rememberSpeed, forgetSpeed, resetVideoSpeed, toggleVideoSpeed,
|
||||
getSupportedRates,
|
||||
getExtendedSupportedRates,
|
||||
setVideoSpeed,
|
||||
videoSpeed,
|
||||
getRememberSpeed,
|
||||
rememberSpeed,
|
||||
forgetSpeed,
|
||||
resetVideoSpeed,
|
||||
toggleVideoSpeed,
|
||||
}
|
||||
})
|
||||
|
||||
@ -10,19 +10,19 @@ type Controller = ReturnType<typeof createController>
|
||||
|
||||
export const component: ComponentMetadata = {
|
||||
name: componentName,
|
||||
displayName: '倍速记忆',
|
||||
displayName: '倍速增强',
|
||||
author: {
|
||||
name: 'JLoeve',
|
||||
link: 'https://github.com/LonelySteve',
|
||||
},
|
||||
description: {
|
||||
'zh-CN': '记忆上次选择的视频播放速度, 还可以使用更多倍速来扩展原生倍速菜单.',
|
||||
'zh-CN': '可以记忆上次选择的视频播放速度, 还可以使用更多倍速来扩展原生倍速菜单.',
|
||||
},
|
||||
tags: [componentsTags.video],
|
||||
urlInclude: playerUrls,
|
||||
entry: async () => (await import('./controller')).createController(),
|
||||
plugin: {
|
||||
displayName: '倍速记忆 - 快捷键支持',
|
||||
displayName: '倍速增强 - 快捷键支持',
|
||||
setup: async ({ addData }) => {
|
||||
const { getComponentSettings } = await import('@/core/settings')
|
||||
|
||||
@ -107,6 +107,10 @@ export const component: ComponentMetadata = {
|
||||
defaultValue: [2.5, 3],
|
||||
hidden: true,
|
||||
},
|
||||
remember: {
|
||||
displayName: '启用倍速记忆',
|
||||
defaultValue: true,
|
||||
},
|
||||
individualRemember: {
|
||||
displayName: '各视频分别记忆',
|
||||
defaultValue: false,
|
||||
|
||||
@ -41,13 +41,16 @@ export interface Options {
|
||||
speed: string
|
||||
extend: boolean
|
||||
extendList: number[]
|
||||
remember: boolean
|
||||
individualRemember: boolean
|
||||
individualRememberList: Record<string, string[]>
|
||||
}
|
||||
|
||||
export const { options, enabled } = getComponentSettings('rememberVideoSpeed') as ComponentSettings<Options>
|
||||
export const { options } = getComponentSettings('rememberVideoSpeed') as ComponentSettings<Options>
|
||||
|
||||
export const getUniqueAscendingSortList = (values: number[]) => Array.from(new Set(values)).sort(ascendingSort())
|
||||
export const getUniqueAscendingSortList = (values: number[]) => (
|
||||
Array.from(new Set(values)).sort(ascendingSort())
|
||||
)
|
||||
|
||||
export const getExtendedSupportedRates = () => getUniqueAscendingSortList(options.extendList)
|
||||
|
||||
@ -71,4 +74,6 @@ export const addListener = (element: HTMLElement, listener: Listener) => {
|
||||
listeners.set(element, listener)
|
||||
}
|
||||
|
||||
export const removeListeners = () => listeners.forEach((listener, element) => element.removeEventListener(...listener))
|
||||
export const removeListeners = () => listeners.forEach(
|
||||
(listener, element) => element.removeEventListener(...listener),
|
||||
)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user