Fix webui 20240108 (#739)

* Fix: 部分字段不对应或缺失

* 添加旧数据库提示

* 少改了一个
This commit is contained in:
铂屑 authored and GitHub committed 2024-01-08 16:38:11 +00:00
1 parent 81a2452efb
commit 08b29d7d35
6 files changed
+67 -43

No files matched your search

+12 -11
View File
@@ -75,20 +75,21 @@ export interface StudioEntity {
tid: number;
cover: string;
title: string;
desc: string;
description: string;
dynamic: string;
tags: string;
dtime?: number;
interactive: number;
tags: string[];
dtime: number;
// interactive: number;
mission_id?: number;
dolby: number;
lossless_music: number;
no_reprint?: number;
up_selection_reply: boolean;
up_close_reply: boolean;
up_close_danmu: boolean;
open_elec?: number;
credits?: Credit[];
hires: number;
no_reprint: number;
up_selection_reply: number;
up_close_reply: number;
up_close_danmu: number;
open_elec: number;
credits: Credit[];
uploader: string;
}
export interface LiveStreamerEntity {
+15 -2
View File
@@ -24,7 +24,7 @@ const TemplateFields: React.FC<FormFCChild> = ({ formState, formApi, values }) =
const collapsed = (<>
<CheckboxGroup field='sound' options={[
{ label: '杜比音效', value: 'dolby' },
{ label: 'Hi-Res无损音质', value: 'lossless_music' },
{ label: 'Hi-Res无损音质', value: 'hires' },
]} direction='horizontal' label='音效设置' />
<CheckboxGroup field='interaction' options={[
{ label: '关闭弹幕', value: 'up_close_danmu' },
@@ -32,6 +32,19 @@ const TemplateFields: React.FC<FormFCChild> = ({ formState, formApi, values }) =
{ label: '开启精选评论', value: 'up_selection_reply' },
]} direction='horizontal' label='互动设置' />
<Input field='dynamic' label='粉丝动态' style={{ width: 464 }} />
<Form.Select
field="uploader"
label='上传插件'
style={{ width: 250 }} showClear>
<Form.Select.Option value="bili_web">bili_web</Form.Select.Option>
<Form.Select.Option value="biliup-rs">biliup-rs</Form.Select.Option>
<Form.Select.Option value="Noop">Noop</Form.Select.Option>
</Form.Select>
<Switch field='no_reprint' label='自制声明' />
<Form.Switch
field="open_elec"
label="开启充电面板"
/>
<ArrayField field='credits'>
{({ add, arrayFields }) => (
<Form.Section text="简介@替换">
@@ -121,7 +134,7 @@ const TemplateFields: React.FC<FormFCChild> = ({ formState, formApi, values }) =
]}
/>
<TagInput
field="tag"
field="tags"
label='标签'
placeholder='输入标签,Enter 确定'
onChange={v => console.log(v)}
+12 -11
View File
@@ -48,20 +48,21 @@ export default function Add() {
tid: values.tid[1],
cover: values.cover ?? '',
title: values.title ?? '',
desc: values.desc ?? '',
description: values.description ?? '',
dynamic: values.dynamic ?? '',
tags: values.tag ?? '',
interactive: values.interactive ?? 0,
dolby: values.dolby ?? 0,
lossless_music: values.lossless_music ?? 0,
up_selection_reply: values.up_selection_reply ?? false,
up_close_reply: values.up_close_reply ?? false,
up_close_danmu: values.up_close_danmu ?? false,
open_elec: values.open_elec,
no_reprint: values.no_reprint,
tags: values.tags ?? [],
// interactive: values.interactive ?? 0,
dolby: values.sound.includes("dolby") ? 1 : 0,
hires: values.sound.includes("hires") ? 1 : 0,
up_selection_reply: values.interaction.includes("up_selection_reply") ? 1 : 0,
up_close_reply: values.interaction.includes("up_close_reply") ? 1 : 0,
up_close_danmu: values.interaction.includes("up_close_danmu") ? 1 : 0,
open_elec: values.open_elec ? 1 : 0,
no_reprint: values.no_reprint ? 1 : 0,
mission_id: values.mission_id,
dtime: values.dtime,
dtime: values.isDtime ? values?.dtime : null,
credits: values.credits,
uploader: values.uploader,
}
const result = await trigger(studioEntity);
+20 -12
View File
@@ -38,10 +38,17 @@ const EditTemplate: React.FC = () => {
if (!data || !typeTree) return null;
let uploadStreamers = {
...data,
tag: data.tags?.length === 0 ? [] : data.tags?.split(','),
tid: [typeTree.find((tt: BiliType) => {
return tt.children.some(ct => ct.id === data?.tid);
})?.value, data.tid]
})?.value, data.tid],
sound: (data.dolby === 1 ? ["dolby"] : [])
.concat(data.hires === 1 ? ["hires"] : []),
interaction: (data.up_close_danmu === 1 ? ["up_close_danmu"] : [])
.concat(data.up_close_reply === 1 ? ["up_close_reply"] : [])
.concat(data.up_selection_reply === 1 ? ["up_selection_reply"] : []),
open_elec: data.open_elec === 1,
no_reprint: data.no_reprint === 1,
isDtime: data.dtime ? true : false,
};
return (<>
<div style={{display: 'flex', flexDirection: 'row-reverse', paddingRight: 12}}>
@@ -59,18 +66,19 @@ const EditTemplate: React.FC = () => {
title: values?.title ?? '',
description: values?.description ?? '',
dynamic: values?.dynamic ?? '',
tag: values?.tag ?? '',
interactive: values?.interactive ?? 0,
dolby: values?.dolby ?? 0,
lossless_music: values?.lossless_music ?? 0,
up_selection_reply: values?.up_selection_reply ?? false,
up_close_reply: values?.up_close_reply ?? false,
up_close_danmu: values?.up_close_danmu ?? false,
open_elec: values?.open_elec,
no_reprint: values?.no_reprint,
tags: values?.tags ?? [],
// interactive: values?.interactive ?? 0,
dolby: values?.sound.includes("dolby") ? 1 : 0,
hires: values?.sound.includes("hires") ? 1 : 0,
up_selection_reply: values?.interaction.includes("up_selection_reply") ? 1 : 0,
up_close_reply: values?.interaction.includes("up_close_reply") ? 1 : 0,
up_close_danmu: values?.interaction.includes("up_close_danmu") ? 1 : 0,
open_elec: values?.open_elec ? 1 : 0,
no_reprint: values?.no_reprint ? 1 : 0,
mission_id: values?.mission_id,
dtime: values?.dtime,
dtime: values?.isDtime ? values?.dtime : null,
credits: values?.credits,
uploader: values?.uploader,
}
const result = await trigger(studioEntity);
await mutate(result);
+4 -6
View File
@@ -30,12 +30,10 @@ class DB:
UploadStreamers.create_table_()
Configuration.create_table_()
with db.connection_context():
columns_name_list = [column_meta.name for column_meta in db.get_columns('streamerinfo')]
if 'id' not in columns_name_list:
try:
cls.migrate_streamer_info()
except OperationalError as e:
logger.error(f"迁移失败: {e},请手动删除旧数据库后重试")
columns_name_list = [column_meta.name for column_meta in db.get_columns('uploadstreamers')]
if 'up_selection_reply' not in columns_name_list:
logger.error(f"检测到旧数据库,请手动删除data文件夹后重试")
return False
return run
@classmethod
+4 -1
View File
@@ -118,8 +118,11 @@ class UploadStreamers(BaseModel):
no_reprint = IntegerField(null=True) # 自制声明, 1为未经允许禁止转载
uploader = CharField(null=True) # 覆盖全局默认上传插件,Noop为不上传,但会执行后处理
user_cookie = CharField(null=True) # 使用指定的账号上传
tags = CharField() # 标签
tags = JSONField() # 标签
credits = JSONField(null=True) # 简介@模板
up_selection_reply = IntegerField(null=True) # 精选评论
up_close_reply = IntegerField(null=True) # 关闭评论
up_close_danmu = IntegerField(null=True) # 精选评论
class LiveStreamers(BaseModel):
"""每个直播间的配置"""