Skip to content

Commit

Permalink
feat: support reset manager config
Browse files Browse the repository at this point in the history
  • Loading branch information
WhiteMinds committed Jan 8, 2024
1 parent f7d6cfc commit f1c695b
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 8 deletions.
14 changes: 9 additions & 5 deletions packages/http-server/src/manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ export const recorderManager = createRecorderManager<RecorderExtra>({
providers: [providerForDouYu, providerForBilibili, providerForHuYa, providerForDouYin],
})

export const defaultManagerConfig: ManagerConfig = {
savePathRule: path.join(paths.data, '{platform}/{owner}/{year}-{month}-{date} {hour}-{min}-{sec} {title}.mp4'),
autoCheckLiveStatusAndRecord: true,
autoCheckInterval: 1000,
ffmpegOutputArgs: recorderManager.ffmpegOutputArgs,
}

export function addRecorderWithAutoIncrementId(args: RecorderCreateOpts<RecorderExtra>): Recorder<RecorderExtra> {
return recorderManager.addRecorder({
...args,
Expand All @@ -40,11 +47,7 @@ export function addRecorderWithAutoIncrementId(args: RecorderCreateOpts<Recorder
export async function initRecorderManager(serverOpts: ServerOpts): Promise<void> {
const { logger } = serverOpts

const managerConfig = readJSONFileSync<ManagerConfig>(managerConfigPath, {
savePathRule: path.join(paths.data, '{platform}/{owner}/{year}-{month}-{date} {hour}-{min}-{sec} {title}.mp4'),
autoCheckLiveStatusAndRecord: true,
ffmpegOutputArgs: recorderManager.ffmpegOutputArgs,
})
const managerConfig = readJSONFileSync<ManagerConfig>(managerConfigPath, defaultManagerConfig)

// 这里做一些旧版本 schema 升级的处理
if (managerConfig.ffmpegOutputArgs == null) {
Expand Down Expand Up @@ -176,5 +179,6 @@ export async function genSRTFile(extraDataPath: string, srtPath: string): Promis
interface ManagerConfig {
savePathRule: string
autoCheckLiveStatusAndRecord: boolean
autoCheckInterval: number
ffmpegOutputArgs: string
}
6 changes: 6 additions & 0 deletions packages/http-server/src/routes/api_types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,12 @@ export namespace API {
} | null
}

export namespace getManagerDefault {
export interface Args {}

export type Resp = Omit<RecorderManagerCreateOpts, 'providers'>
}

export namespace getRecords {
export interface Args extends PagedArgs {
recorderId?: Recorder['id']
Expand Down
10 changes: 9 additions & 1 deletion packages/http-server/src/routes/manager.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Router } from 'express'
import { recorderManager } from '../manager'
import { defaultManagerConfig, recorderManager } from '../manager'
import { assertStringType, pick } from '../utils'
import { API } from './api_types'

Expand Down Expand Up @@ -41,6 +41,10 @@ async function resolveChannel(args: API.resolveChannel.Args): Promise<API.resolv
return null
}

function getManagerDefault(args: API.getManagerDefault.Args): API.getManagerDefault.Resp {
return defaultManagerConfig
}

router
.route('/manager')
.get(async (req, res) => {
Expand All @@ -66,4 +70,8 @@ router.route('/manager/resolve_channel').get(async (req, res) => {
res.json({ payload: await resolveChannel({ channelURL }) })
})

router.route('/manager/default').get(async (req, res) => {
res.json({ payload: getManagerDefault({}) })
})

export { router }
6 changes: 6 additions & 0 deletions packages/web/src/services/LARServerService/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ async function resolveChannel(args: API.resolveChannel.Args): Promise<API.resolv
return resp.data.payload
}

async function getManagerDefault(args: API.getManagerDefault.Args): Promise<API.getManagerDefault.Resp> {
const resp = await requester.get<{ payload: API.getManagerDefault.Resp }>('/manager/default')
return resp.data.payload
}

async function getRecords(args: API.getRecords.Args): Promise<API.getRecords.Resp> {
const resp = await requester.get<{ payload: API.getRecords.Resp }>('/records', {
params: args,
Expand Down Expand Up @@ -124,6 +129,7 @@ export const LARServerService = {
getManager,
updateManager,
resolveChannel,
getManagerDefault,
getRecords,
getRecordExtraData,
createRecordSRT,
Expand Down
15 changes: 13 additions & 2 deletions packages/web/src/views/RecordersManage/Settings.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
<template>
<v-card class="mx-auto my-4 max-w-2xl">
<v-card-title>录制全局设置</v-card-title>
<v-card-title class="flex gap-3 items-center">
录制全局设置
<v-btn v-if="isChanged" size="small" variant="tonal" @click="reset">重置</v-btn>
</v-card-title>

<v-card-item>
<div v-if="!manager" class="text-center p-4">
Expand Down Expand Up @@ -155,7 +158,7 @@

<script setup lang="ts">
import type { API } from '@autorecord/http-server'
import { onMounted, ref } from 'vue'
import { computed, onMounted, ref } from 'vue'
import { useRouter } from 'vue-router'
import { LARServerService } from '../../services/LARServerService'
import { ClientService } from '../../services/ClientService'
Expand All @@ -167,6 +170,7 @@ const isClient = ClientService.isClientMode()
const version = ClientService.getClientAPI()?.getVersion()
const router = useRouter()
const manager = ref<API.getManager.Resp>()
const managerDefault = ref<API.getManagerDefault.Resp>()
const settings = ref<API.getSettings.Resp>()
const savePathRuleAlertVisible = ref(false)
Expand All @@ -176,6 +180,7 @@ useEffectInLifecycle(() => {
onMounted(async () => {
manager.value = await LARServerService.getManager({})
managerDefault.value = await LARServerService.getManagerDefault({})
settings.value = await LARServerService.getSettings({})
})
Expand All @@ -189,4 +194,10 @@ const apply = async () => {
// TODO: 前端目前只有 RecordService 用到了 settings,为了降低开发复杂度,这里先直接赋值
RecordService.noticeOnRecordStart = newSettings.noticeOnRecordStart
}
const reset = async () => {
manager.value = { ...managerDefault.value }
}
const isChanged = computed(() => JSON.stringify(manager.value) !== JSON.stringify(managerDefault.value))
</script>

0 comments on commit f1c695b

Please sign in to comment.