From 08b29d7d35eec8b270b274b09f50d26ed29fa695 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=93=82=E5=B1=91?= <80164656+boxie123@users.noreply.github.com> Date: Tue, 9 Jan 2024 00:38:11 +0800 Subject: [PATCH] Fix webui 20240108 (#739) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix: 部分字段不对应或缺失 * 添加旧数据库提示 * 少改了一个 --- app/lib/api-streamer.ts | 23 ++++++++++++----------- app/ui/TemplateFields.tsx | 17 +++++++++++++++-- app/upload-manager/add/page.tsx | 23 ++++++++++++----------- app/upload-manager/edit/page.tsx | 32 ++++++++++++++++++++------------ biliup/database/db.py | 10 ++++------ biliup/database/models.py | 5 ++++- 6 files changed, 67 insertions(+), 43 deletions(-) diff --git a/app/lib/api-streamer.ts b/app/lib/api-streamer.ts index 72f71fc..8e12457 100644 --- a/app/lib/api-streamer.ts +++ b/app/lib/api-streamer.ts @@ -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 { diff --git a/app/ui/TemplateFields.tsx b/app/ui/TemplateFields.tsx index 4a8f237..a5d86ce 100644 --- a/app/ui/TemplateFields.tsx +++ b/app/ui/TemplateFields.tsx @@ -24,7 +24,7 @@ const TemplateFields: React.FC = ({ formState, formApi, values }) = const collapsed = (<> = ({ formState, formApi, values }) = { label: '开启精选评论', value: 'up_selection_reply' }, ]} direction='horizontal' label='互动设置' /> + + bili_web + biliup-rs + Noop + + + {({ add, arrayFields }) => ( @@ -121,7 +134,7 @@ const TemplateFields: React.FC = ({ formState, formApi, values }) = ]} /> console.log(v)} diff --git a/app/upload-manager/add/page.tsx b/app/upload-manager/add/page.tsx index ed0c35f..aa5da59 100644 --- a/app/upload-manager/add/page.tsx +++ b/app/upload-manager/add/page.tsx @@ -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); diff --git a/app/upload-manager/edit/page.tsx b/app/upload-manager/edit/page.tsx index 400c6fc..dff6b45 100644 --- a/app/upload-manager/edit/page.tsx +++ b/app/upload-manager/edit/page.tsx @@ -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 (<>
@@ -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); diff --git a/biliup/database/db.py b/biliup/database/db.py index 41537d1..aa4bae7 100644 --- a/biliup/database/db.py +++ b/biliup/database/db.py @@ -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 diff --git a/biliup/database/models.py b/biliup/database/models.py index d6f4611..74787e7 100644 --- a/biliup/database/models.py +++ b/biliup/database/models.py @@ -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): """每个直播间的配置"""