import { PresetCategory } from '@/define/data/presetData' import { PresetBasic } from './presetBasic' import { PromptMergeType } from '@/define/enum/bookEnum' import { isEmpty } from 'lodash' import { t } from '@/i18n' export class PresetBasicService extends PresetBasic { constructor() { super() } /** * 获取场景的提示词 * @param ids 需要获取的IDs * @returns */ async GetScenePresetStringByIds(ids: string[]): Promise { 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, mjModel: string = '' ): 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() } } // 判断是不是v7 if (mjModel == '0d33ae62-e0a8-4429-89e4-304bfd20cd6f') { //这边坐下合并 if (characterUrl != '') { characterUrl = ` --oref ${characterUrl} --ow ${crefCw}` } } else { // 其他 //这边坐下合并 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 += `, ` } } return { characterString: result, characterUrl: '' } } else { throw new Error(t('不支持的合并类型')) } } }