1. 新增预设库的批量删除 2. 添加两个高图文一致性推理出图提示词预设 3. 新增两个通用的高图文一致性推理出图和图转视频提示词预设 4. 新增 ComfyUI 图转视频功能(之前的工作流需要重新配置) 5. 优化 ComfyUI 设置 6. 新增导入图转视频提示词 7. 新增同步出图提示词到图转视频提示词
249 lines
7.1 KiB
TypeScript
249 lines
7.1 KiB
TypeScript
import Realm, { ObjectSchema } from 'realm'
|
||
import { BookTaskStatus, MJAction } from '@/define/enum/bookEnum'
|
||
import { MJImageType } from '@/define/enum/mjEnum'
|
||
|
||
export class Subtitle extends Realm.Object<Subtitle> {
|
||
startTime!: number
|
||
endTime!: number
|
||
srtValue!: string
|
||
id!: string
|
||
static schema = {
|
||
name: 'Subtitle',
|
||
properties: {
|
||
startTime: 'int',
|
||
endTime: 'int',
|
||
srtValue: 'string',
|
||
id: 'string'
|
||
},
|
||
primaryKey: 'id'
|
||
}
|
||
}
|
||
|
||
export class MJMessage extends Realm.Object<MJMessage> {
|
||
id!: string
|
||
mjApiUrl!: string | null
|
||
progress!: number
|
||
category!: MJImageType
|
||
imageClick!: string | null // 图片点击(显示的小的)
|
||
imageShow!: string | null // 图片实际的地址
|
||
messageId!: string // 消息ID(可以是MJ中的,也可以是API中的)
|
||
action!: MJAction // 动作(生图,反推之类)
|
||
status!: string // 状态
|
||
message!: string | null // 消息
|
||
static schema: ObjectSchema = {
|
||
name: 'MJMessage',
|
||
properties: {
|
||
id: 'string',
|
||
mjApiUrl: 'string?',
|
||
progress: 'int',
|
||
category: 'string',
|
||
imageClick: 'string?',
|
||
imageShow: 'string?',
|
||
messageId: 'string',
|
||
action: 'string',
|
||
status: 'string',
|
||
message: 'string?'
|
||
},
|
||
primaryKey: 'id'
|
||
}
|
||
}
|
||
|
||
export class VideoMessage extends Realm.Object<VideoMessage> {
|
||
id!: string
|
||
msg!: string | null
|
||
videoType!: string
|
||
prompt!: string | null
|
||
style!: string | null
|
||
imageUrl!: string | null
|
||
model!: string | null
|
||
bookTaskDetailId!: string
|
||
status!: string | null
|
||
videoUrl!: string | null
|
||
taskId!: string | null
|
||
runwayOptions!: string | null // 生成视频的一些设置
|
||
lumaOptions!: string | null // 生成视频的一些设置
|
||
klingOptions!: string | null // 生成视频的一些设置
|
||
mjVideoOptions!: string | null // MJ生成视频的一些设置
|
||
hailuoTextToVideoOptions?: string
|
||
hailuoFirstFrameOnlyOptions?: string
|
||
hailuoFirstLastFrameOptions?: string
|
||
comfyUIOptions?: string // Comfy UI 生成视频的一些设置
|
||
messageData!: string | null
|
||
static schema: ObjectSchema = {
|
||
name: 'VideoMessage',
|
||
properties: {
|
||
id: 'string',
|
||
msg: 'string?',
|
||
videoType: 'string',
|
||
bookTaskDetailId: 'string?',
|
||
prompt: 'string?',
|
||
style: 'string?',
|
||
imageUrl: 'string?',
|
||
model: 'string?',
|
||
status: 'string?',
|
||
videoUrl: 'string?',
|
||
taskId: 'string?',
|
||
runwayOptions: 'string?',
|
||
lumaOptions: 'string?',
|
||
klingOptions: 'string?',
|
||
mjVideoOptions: 'string?',
|
||
hailuoTextToVideoOptions: "string?",
|
||
hailuoFirstFrameOnlyOptions: "string?",
|
||
hailuoFirstLastFrameOptions: "string?",
|
||
comfyUIOptions: "string?",
|
||
messageData: 'string?'
|
||
},
|
||
primaryKey: 'id'
|
||
}
|
||
}
|
||
|
||
export class WebuiConfig extends Realm.Object<WebuiConfig> {
|
||
sampler_name!: string // 采样器名称
|
||
negative_prompt!: string // 负面提示
|
||
batch_size!: number // 批次大小
|
||
steps!: number // 步数
|
||
cfg_scale!: number // 提示词相关性
|
||
denoising_strength!: number // 降噪强度
|
||
width!: number // 宽度
|
||
height!: number // 高度
|
||
seed!: number // 种子
|
||
init_images!: string // 初始图片(垫图的图片地址)
|
||
id!: string
|
||
|
||
static schema: ObjectSchema = {
|
||
name: 'WebuiConfig',
|
||
properties: {
|
||
sampler_name: 'string',
|
||
negative_prompt: 'string',
|
||
batch_size: 'int',
|
||
steps: 'int',
|
||
cfg_scale: 'int',
|
||
denoising_strength: 'int',
|
||
width: 'int',
|
||
height: 'int',
|
||
seed: 'int',
|
||
init_images: 'string',
|
||
id: 'string'
|
||
},
|
||
primaryKey: 'id'
|
||
}
|
||
}
|
||
|
||
export class SDConfig extends Realm.Object<SDConfig> {
|
||
checkpoints!: string // 大模型
|
||
api!: string // api地址
|
||
model!: string // 生图方式
|
||
webuiConfig!: WebuiConfig
|
||
id!: string
|
||
static schema: ObjectSchema = {
|
||
name: 'SDConfig',
|
||
properties: {
|
||
checkpoints: 'string',
|
||
api: 'string',
|
||
model: 'string',
|
||
webuiConfig: 'WebuiConfig',
|
||
id: 'string'
|
||
},
|
||
primaryKey: 'id'
|
||
}
|
||
}
|
||
|
||
// 放反推的提示词的对象
|
||
export class ReversePrompt extends Realm.Object<ReversePrompt> {
|
||
id!: string
|
||
bookTaskDetailId!: string
|
||
prompt!: string
|
||
promptCN!: string
|
||
isSelect!: boolean
|
||
static schema: ObjectSchema = {
|
||
name: 'ReversePrompt',
|
||
properties: {
|
||
id: 'string',
|
||
bookTaskDetailId: 'string',
|
||
prompt: 'string',
|
||
promptCN: 'string',
|
||
isSelect: 'bool'
|
||
},
|
||
primaryKey: 'id'
|
||
}
|
||
}
|
||
|
||
export class BookTaskDetailModel extends Realm.Object<BookTaskDetailModel> {
|
||
id!: string
|
||
no!: number
|
||
name!: string
|
||
bookId!: string
|
||
bookTaskId!: string
|
||
videoPath!: string | null // 视频地址
|
||
generateVideoPath!: string | null // 生成视频地址
|
||
subVideoPath!: string[] | null // 生成的批次视频的地址
|
||
audioPath!: string | null // 音频地址
|
||
word!: string | null // 文案
|
||
oldImage!: string | null // 旧图片(用于SD的图生图)
|
||
afterGpt!: string | null // GPT生成的文案
|
||
startTime!: number | null // 开始时间
|
||
endTime!: number | null // 结束时间
|
||
timeLimit!: string | null // 事件实现(0 -- 3000)
|
||
subValue!: string | null // 包含的字幕数据
|
||
characterTags!: string[] | null // 角色标签
|
||
sceneTags!: string[] | null // 场景标签
|
||
styleTags!: string[] | null // 风格标签
|
||
promptSort!: string | null // 提示词排序
|
||
gptPrompt!: string | null // GPT提示词
|
||
mjMessage!: MJMessage | null // MJ消息
|
||
videoMessage!: VideoMessage | null // 视频消息
|
||
outImagePath!: string | null // 输出图片地址
|
||
subImagePath!: string[] | null // 子图片地址
|
||
imageLock!: boolean // 图片锁
|
||
prompt!: string | null // 提示
|
||
adetailer!: boolean // 是否开启修脸
|
||
sdConifg!: SDConfig | null // SD配置
|
||
reversePrompt!: ReversePrompt[] | null // 反推的提示词(数组)
|
||
subtitlePosition!: string | null // 字幕位置
|
||
status!: BookTaskStatus
|
||
createTime!: Date
|
||
updateTime!: Date
|
||
|
||
static schema: ObjectSchema = {
|
||
name: 'BookTaskDetail',
|
||
properties: {
|
||
id: 'string',
|
||
no: 'int',
|
||
name: 'string',
|
||
bookId: { type: 'string', indexed: true },
|
||
bookTaskId: { type: 'string', indexed: true },
|
||
videoPath: 'string?',
|
||
generateVideoPath: 'string?', // 生成视频地址
|
||
subVideoPath: 'string[]', // 生成的批次视频的地址
|
||
audioPath: 'string?',
|
||
word: 'string?',
|
||
oldImage: 'string?',
|
||
afterGpt: 'string?',
|
||
startTime: 'int?',
|
||
endTime: 'int?',
|
||
timeLimit: 'string?',
|
||
subValue: 'string?',
|
||
reversePrompt: { type: 'list', objectType: 'ReversePrompt' },
|
||
characterTags: { type: 'list', objectType: 'string' },
|
||
sceneTags: 'string[]',
|
||
styleTags: 'string[]',
|
||
promptSort: 'string?',
|
||
gptPrompt: 'string?',
|
||
mjMessage: 'MJMessage?',
|
||
videoMessage: 'VideoMessage?',
|
||
outImagePath: 'string?',
|
||
subImagePath: 'string[]',
|
||
imageLock: 'bool',
|
||
prompt: 'string?',
|
||
adetailer: 'bool',
|
||
sdConifg: 'SDConfig?',
|
||
subtitlePosition: 'string?',
|
||
status: 'string',
|
||
createTime: 'date',
|
||
updateTime: 'date'
|
||
},
|
||
// 主键为_id
|
||
primaryKey: 'id'
|
||
}
|
||
}
|