LaiTool_PRO/src/main/service/preset/presetBasicService.ts

80 lines
2.4 KiB
TypeScript
Raw Normal View History

2025-08-19 14:33:59 +08:00
import { PresetCategory } from '@/define/data/presetData'
import { PresetBasic } from './presetBasic'
import { PromptMergeType } from '@/define/enum/bookEnum'
import { isEmpty } from 'lodash'
import { t } from '@/i18n'
2025-08-19 14:33:59 +08:00
export class PresetBasicService extends PresetBasic {
constructor() {
super()
}
/**
*
* @param ids IDs
* @returns
*/
async GetScenePresetStringByIds(ids: string[]): Promise<string> {
await this.InitPresetBasic()
let sceneString = ''
for (let i = 0; i < ids.length; i++) {
const id = ids[i]
let scenes = this.presetRealmService.GetPresetByCondition({
id: id,
type: PresetCategory.Scene,
isShow: true
})
if (scenes.presetArray.length <= 0) {
continue
}
sceneString += scenes.presetArray[0].prompt + ', '
}
return sceneString
}
/**
*
* @param ids IDs
* @returns
*/
async GetCharacterPresetStringByIds(
ids: string[],
type: PromptMergeType = PromptMergeType.MJ_MERGE
): Promise<{ characterString: string; characterUrl: string }> {
await this.InitPresetBasic()
let characterString = ''
let characterUrl = ''
let crefCw = ''
let characters = this.presetRealmService.GetPresetByIds(ids, PresetCategory.Character)
if (type == PromptMergeType.MJ_MERGE) {
for (let i = 0; i < characters.length; i++) {
const element = characters[i]
characterString += element.prompt + ', '
if (element.imageUrl && element.imageUrl != '' && element.crefCw) {
characterUrl += ` ${element.imageUrl} `
crefCw = (element.crefCw ?? 20).toString()
}
}
//这边坐下合并
if (characterUrl != '') {
characterUrl = ` --cref ${characterUrl} --cw ${crefCw}`
}
return { characterString, characterUrl }
} else if (type == PromptMergeType.SD_MERGE) {
let result = ''
for (let i = 0; i < characters.length; i++) {
let character = characters[i]
result += character.prompt + ', '
if (!isEmpty(character.lora) && character.lora != '无') {
result += `, <lora:${character.lora}:${character.loraWeight ?? 1}>`
}
}
return { characterString: result, characterUrl: '' }
} else {
throw new Error(t('不支持的合并类型'))
2025-08-19 14:33:59 +08:00
}
}
}