LaiTool V3.0.1-preview.2
This commit is contained in:
parent
7312053a20
commit
f3a25e9474
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "laitool",
|
"name": "laitool",
|
||||||
"version": "3.0.1-preview.1",
|
"version": "3.0.1-preview.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "laitool",
|
"name": "laitool",
|
||||||
"version": "3.0.1-preview.1",
|
"version": "3.0.1-preview.2",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@alicloud/alimt20181012": "^1.2.0",
|
"@alicloud/alimt20181012": "^1.2.0",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "laitool",
|
"name": "laitool",
|
||||||
"version": "3.0.1-preview.1",
|
"version": "3.0.1-preview.2",
|
||||||
"description": "An AI tool for image processing, video processing, and other functions.",
|
"description": "An AI tool for image processing, video processing, and other functions.",
|
||||||
"main": "./out/main/index.js",
|
"main": "./out/main/index.js",
|
||||||
"author": "laitool.cn",
|
"author": "laitool.cn",
|
||||||
|
|||||||
BIN
resources/image/c_s/e314a26a-dc61-4776-b8da-921d5c3544ff.png
Normal file
BIN
resources/image/c_s/e314a26a-dc61-4776-b8da-921d5c3544ff.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
Binary file not shown.
BIN
resources/scripts/db/software - 副本.realm
Normal file
BIN
resources/scripts/db/software - 副本.realm
Normal file
Binary file not shown.
BIN
resources/scripts/db/software - 副本.realm.lock
Normal file
BIN
resources/scripts/db/software - 副本.realm.lock
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -16,7 +16,7 @@
|
|||||||
"customize_gpt_prompt": "a93b693e-bb3f-406d-9730-cba43a6585a2",
|
"customize_gpt_prompt": "a93b693e-bb3f-406d-9730-cba43a6585a2",
|
||||||
"character_select_model": "drop",
|
"character_select_model": "drop",
|
||||||
"image_generate_category": "mj",
|
"image_generate_category": "mj",
|
||||||
"window_wh_bm_remember": true,
|
"window_wh_bm_remember": false,
|
||||||
"window_wh_bm": {
|
"window_wh_bm": {
|
||||||
"x": 1699,
|
"x": 1699,
|
||||||
"y": 230,
|
"y": 230,
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import { isEmpty, isNumber } from 'lodash'
|
|||||||
const { v4: uuidv4 } = require('uuid')
|
const { v4: uuidv4 } = require('uuid')
|
||||||
import { version } from '../../../../../package.json'
|
import { version } from '../../../../../package.json'
|
||||||
import { GeneralResponse } from '../../../../model/generalResponse'
|
import { GeneralResponse } from '../../../../model/generalResponse'
|
||||||
|
import { MJCategroy } from '../../../enum/bookEnum'
|
||||||
|
|
||||||
export class MJSettingService extends BaseSoftWareService {
|
export class MJSettingService extends BaseSoftWareService {
|
||||||
static instance: MJSettingService | null = null
|
static instance: MJSettingService | null = null
|
||||||
@ -31,6 +32,58 @@ export class MJSettingService extends BaseSoftWareService {
|
|||||||
return MJSettingService.instance
|
return MJSettingService.instance
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化数据
|
||||||
|
*/
|
||||||
|
InitData() {
|
||||||
|
// 添加默认数据,然后重新获取
|
||||||
|
this.transaction(() => {
|
||||||
|
// 初始化MJ设置的数据
|
||||||
|
this.realm.create('MjSetting', {
|
||||||
|
id: uuidv4(),
|
||||||
|
type: MJCategroy.API_MJ,
|
||||||
|
selectRobot: 'niji',
|
||||||
|
imageScale: '3e2772f2-041c-49c6-ba13-d0ed120310b8',
|
||||||
|
imageSuffix: ' --niji 6 --ar 1:1',
|
||||||
|
taskCount: 5,
|
||||||
|
spaceTime: 5,
|
||||||
|
createTime: new Date(),
|
||||||
|
updateTime: new Date(),
|
||||||
|
version: version,
|
||||||
|
requestModel: MJCategroy.API_MJ,
|
||||||
|
imageModel: "99377cad-c103-4cee-a958-86a104879328"
|
||||||
|
})
|
||||||
|
let apiSetting = this.realm.objects('APIMj');
|
||||||
|
if (apiSetting.length <= 0) {
|
||||||
|
this.realm.create('APIMj', {
|
||||||
|
id: uuidv4(),
|
||||||
|
mjApiUrl: 'b44c6f24-59e4-4a71-b2c7-3df0c4e35e65',
|
||||||
|
mjSpeed: 'relaxed',
|
||||||
|
apiKey: "自己的APIKey",
|
||||||
|
createTime: new Date(),
|
||||||
|
updateTime: new Date(),
|
||||||
|
version: version
|
||||||
|
})
|
||||||
|
}
|
||||||
|
let browserSetting = this.realm.objects('BrowserMJ');
|
||||||
|
if (browserSetting.length <= 0) {
|
||||||
|
this.realm.create('BrowserMJ', {
|
||||||
|
id: uuidv4(),
|
||||||
|
serviceId: "自己的服务ID",
|
||||||
|
channelId: '自己的频道ID',
|
||||||
|
mjBotId: '自己的MJ机器人ID',
|
||||||
|
nijBotId: '自己的NIJI机器人ID',
|
||||||
|
token: '自己的Token',
|
||||||
|
userAgent: "自己的UserAgent",
|
||||||
|
userAgentCustom: false,
|
||||||
|
createTime: new Date(),
|
||||||
|
updateTime: new Date(),
|
||||||
|
version: version
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
//#region 览器模式的MJ设置
|
//#region 览器模式的MJ设置
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -525,7 +578,9 @@ export class MJSettingService extends BaseSoftWareService {
|
|||||||
// 获取MJ的基础配置信息
|
// 获取MJ的基础配置信息
|
||||||
let mjSettings = this.GetMjSetting(null)
|
let mjSettings = this.GetMjSetting(null)
|
||||||
if (mjSettings.data.length <= 0) {
|
if (mjSettings.data.length <= 0) {
|
||||||
throw new Error('没有找到MJ的配置信息,请先添加')
|
this.InitData();
|
||||||
|
mjSettings = this.GetMjSetting(null)
|
||||||
|
|
||||||
}
|
}
|
||||||
// 获取API的配置信息
|
// 获取API的配置信息
|
||||||
let apiSettings = this.GetAPIMjSetting(null)
|
let apiSettings = this.GetAPIMjSetting(null)
|
||||||
|
|||||||
@ -371,6 +371,10 @@ export const gptDefine = {
|
|||||||
} else {
|
} else {
|
||||||
let tmp_id = uuidv4()
|
let tmp_id = uuidv4()
|
||||||
value.id = tmp_id
|
value.id = tmp_id
|
||||||
|
|
||||||
|
if (property == 'gpt_options') {
|
||||||
|
value.value = tmp_id
|
||||||
|
}
|
||||||
gpt.push(value)
|
gpt.push(value)
|
||||||
}
|
}
|
||||||
tmp_gpt[property] = gpt
|
tmp_gpt[property] = gpt
|
||||||
|
|||||||
@ -423,6 +423,9 @@ export class MJOriginalImageGenerate {
|
|||||||
// 获取当前的API url
|
// 获取当前的API url
|
||||||
apiUrl = await this.InitMJAPIUrl(mjSetting.apiSetting.mjApiUrl)
|
apiUrl = await this.InitMJAPIUrl(mjSetting.apiSetting.mjApiUrl)
|
||||||
} else if (mjSetting.requestModel == MJImageType.REMOTE_MJ) {
|
} else if (mjSetting.requestModel == MJImageType.REMOTE_MJ) {
|
||||||
|
// 这边进行等待
|
||||||
|
console.log(mjSetting)
|
||||||
|
await this.tools.delay(mjSetting.spaceTime * 1000)
|
||||||
apiUrl = {
|
apiUrl = {
|
||||||
mj_url: {
|
mj_url: {
|
||||||
imagine: define.remotemj_api + 'mj/submit/imagine',
|
imagine: define.remotemj_api + 'mj/submit/imagine',
|
||||||
@ -454,8 +457,8 @@ export class MJOriginalImageGenerate {
|
|||||||
throw new Error('提示词包含敏感词,请修改后重试')
|
throw new Error('提示词包含敏感词,请修改后重试')
|
||||||
}
|
}
|
||||||
} else if (
|
} else if (
|
||||||
imagine_url.includes('api.ephone.ai') ||
|
request_model == MJImageType.API_MJ &&
|
||||||
imagine_url.includes('https://laitool.net')
|
(imagine_url.includes('api.ephone.ai') || imagine_url.includes('laitool'))
|
||||||
) {
|
) {
|
||||||
// ePhoneAPI
|
// ePhoneAPI
|
||||||
let headers = {
|
let headers = {
|
||||||
|
|||||||
@ -11,7 +11,7 @@ const Util = require('@alicloud/tea-util')
|
|||||||
let fspromises = require('fs').promises
|
let fspromises = require('fs').promises
|
||||||
import { SoftwareService } from '../../define/db/service/SoftWare/softwareService'
|
import { SoftwareService } from '../../define/db/service/SoftWare/softwareService'
|
||||||
import { isEmpty } from 'lodash'
|
import { isEmpty } from 'lodash'
|
||||||
import {ValidateJson} from '../../define/Tools/validate'
|
import { ValidateJson } from '../../define/Tools/validate'
|
||||||
|
|
||||||
let { Signer } = require('@volcengine/openapi')
|
let { Signer } = require('@volcengine/openapi')
|
||||||
|
|
||||||
@ -29,33 +29,31 @@ export class Translate {
|
|||||||
this.softwareService = await SoftwareService.getInstance()
|
this.softwareService = await SoftwareService.getInstance()
|
||||||
}
|
}
|
||||||
// 获取翻译设置
|
// 获取翻译设置
|
||||||
if (!this.translationBusiness || !this.translationAppId || !this.translationSecret) {
|
let translateSetting = this.softwareService.GetSoftWarePropertyData('translationSetting')
|
||||||
let translateSetting = this.softwareService.GetSoftWarePropertyData('translationSetting')
|
if (isEmpty(translateSetting)) {
|
||||||
if (isEmpty(translateSetting)) {
|
throw new Error('翻译设置为空,请先设置')
|
||||||
throw new Error('翻译设置为空,请先设置')
|
|
||||||
}
|
|
||||||
let tryParse = ValidateJson(translateSetting)
|
|
||||||
if (!tryParse) {
|
|
||||||
throw new Error('翻译设置的格式错误,请重置后重新添加')
|
|
||||||
}
|
|
||||||
let translateSettingData = JSON.parse(translateSetting)
|
|
||||||
let selectModel = translateSettingData.selectModel
|
|
||||||
let translateIndex = translateSettingData.translates.findIndex(
|
|
||||||
(item) => item.name == selectModel
|
|
||||||
)
|
|
||||||
if (translateIndex < 0) {
|
|
||||||
throw new Error('没有找到对应的翻译API设置')
|
|
||||||
}
|
|
||||||
let translateData = translateSettingData.translates[translateIndex]
|
|
||||||
for (const key in translateData) {
|
|
||||||
if (!translateData[key]) {
|
|
||||||
throw new Error(`翻译设置中的 ${key} 不能为空`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.translationBusiness = translateData.translation_business
|
|
||||||
this.translationAppId = translateData.translation_app_id
|
|
||||||
this.translationSecret = translateData.translation_secret
|
|
||||||
}
|
}
|
||||||
|
let tryParse = ValidateJson(translateSetting)
|
||||||
|
if (!tryParse) {
|
||||||
|
throw new Error('翻译设置的格式错误,请重置后重新添加')
|
||||||
|
}
|
||||||
|
let translateSettingData = JSON.parse(translateSetting)
|
||||||
|
let selectModel = translateSettingData.selectModel
|
||||||
|
let translateIndex = translateSettingData.translates.findIndex(
|
||||||
|
(item) => item.name == selectModel
|
||||||
|
)
|
||||||
|
if (translateIndex < 0) {
|
||||||
|
throw new Error('没有找到对应的翻译API设置')
|
||||||
|
}
|
||||||
|
let translateData = translateSettingData.translates[translateIndex]
|
||||||
|
for (const key in translateData) {
|
||||||
|
if (!translateData[key]) {
|
||||||
|
throw new Error(`翻译设置中的 ${key} 不能为空`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.translationBusiness = translateData.translation_business
|
||||||
|
this.translationAppId = translateData.translation_app_id
|
||||||
|
this.translationSecret = translateData.translation_secret
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -67,7 +67,6 @@ export class MJOpt {
|
|||||||
this.mjSettingService = await MJSettingService.getInstance()
|
this.mjSettingService = await MJSettingService.getInstance()
|
||||||
}
|
}
|
||||||
this.mjSetting = await this.mjApi.InitMJSetting()
|
this.mjSetting = await this.mjApi.InitMJSetting()
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 返回MJ的数据到前端界面,前端界面做出相应的改变
|
* 返回MJ的数据到前端界面,前端界面做出相应的改变
|
||||||
|
|||||||
@ -53,31 +53,31 @@ export class TranslateService {
|
|||||||
InitialTranslateSetting(): TranslateModel.TranslateModel {
|
InitialTranslateSetting(): TranslateModel.TranslateModel {
|
||||||
return {
|
return {
|
||||||
selectModel: TranslateAPIType.BAIDU,
|
selectModel: TranslateAPIType.BAIDU,
|
||||||
translation_auto: false,
|
translation_auto: true,
|
||||||
translates: [
|
translates: [
|
||||||
{
|
{
|
||||||
name: TranslateAPIType.BAIDU,
|
name: TranslateAPIType.BAIDU,
|
||||||
translation_business: "https://fanyi-api.baidu.com/api/trans/vip/translate",
|
translation_business: "https://fanyi-api.baidu.com/api/trans/vip/translate",
|
||||||
translation_app_id: undefined,
|
translation_app_id: "百度翻译的APP ID",
|
||||||
translation_secret: undefined
|
translation_secret: "百度翻译的密钥"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: TranslateAPIType.TENCENT,
|
name: TranslateAPIType.TENCENT,
|
||||||
translation_business: "https://tmt.tencentcloudapi.com",
|
translation_business: "https://tmt.tencentcloudapi.com",
|
||||||
translation_app_id: undefined,
|
translation_app_id: '腾讯云的APP ID',
|
||||||
translation_secret: undefined
|
translation_secret: "腾讯云的密钥"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: TranslateAPIType.VOLCENGINE,
|
name: TranslateAPIType.VOLCENGINE,
|
||||||
translation_business: "https://translate.volcengineapi.com?",
|
translation_business: "https://translate.volcengineapi.com?",
|
||||||
translation_app_id: undefined,
|
translation_app_id: '火山引擎的APP ID',
|
||||||
translation_secret: undefined
|
translation_secret: '火山引擎的密钥'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: TranslateAPIType.ALI,
|
name: TranslateAPIType.ALI,
|
||||||
translation_business: "https://mt.cn-hangzhou.aliyuncs.com",
|
translation_business: "https://mt.cn-hangzhou.aliyuncs.com",
|
||||||
translation_app_id: undefined,
|
translation_app_id: '阿里云的APP ID',
|
||||||
translation_secret: undefined
|
translation_secret: '阿里云的密钥'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -93,7 +93,10 @@ export class TranslateService {
|
|||||||
let translateSettingString = this.softwareService.GetSoftWarePropertyData('translationSetting');
|
let translateSettingString = this.softwareService.GetSoftWarePropertyData('translationSetting');
|
||||||
if (isEmpty(translateSettingString)) {
|
if (isEmpty(translateSettingString)) {
|
||||||
// 初始化
|
// 初始化
|
||||||
translateSetting = this.InitialTranslateSetting()
|
translateSetting = this.InitialTranslateSetting();
|
||||||
|
await this.ResetTranslateSetting();
|
||||||
|
translateSettingString = this.softwareService.GetSoftWarePropertyData('translationSetting');
|
||||||
|
translateSetting = JSON.parse(translateSettingString);
|
||||||
} else {
|
} else {
|
||||||
// 解析
|
// 解析
|
||||||
let tryParse = ValidateJson(translateSettingString)
|
let tryParse = ValidateJson(translateSettingString)
|
||||||
|
|||||||
@ -23,8 +23,8 @@ export class TTS {
|
|||||||
/**
|
/**
|
||||||
* 初始化TTS设置
|
* 初始化TTS设置
|
||||||
*/
|
*/
|
||||||
InitTTSSetting() {
|
async InitTTSSetting() {
|
||||||
return {
|
let defaultData = {
|
||||||
selectModel: 'edge-tts',
|
selectModel: 'edge-tts',
|
||||||
edgeTTS: {
|
edgeTTS: {
|
||||||
value: 'zh-CN-XiaoxiaoNeural',
|
value: 'zh-CN-XiaoxiaoNeural',
|
||||||
@ -37,6 +37,8 @@ export class TTS {
|
|||||||
volumn: 0 // 音量
|
volumn: 0 // 音量
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
await this.SaveTTSConfig(defaultData)
|
||||||
|
return defaultData
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,7 +52,7 @@ export class TTS {
|
|||||||
let resObj = undefined
|
let resObj = undefined
|
||||||
if (isEmpty(res)) {
|
if (isEmpty(res)) {
|
||||||
// 没有数据,需要初始化
|
// 没有数据,需要初始化
|
||||||
resObj = this.InitTTSSetting()
|
resObj = await this.InitTTSSetting()
|
||||||
} else {
|
} else {
|
||||||
let tryParse = ValidateJson(res)
|
let tryParse = ValidateJson(res)
|
||||||
if (!tryParse) {
|
if (!tryParse) {
|
||||||
|
|||||||
@ -36,13 +36,16 @@ export class Watermark {
|
|||||||
/**
|
/**
|
||||||
* 初始化水印设置
|
* 初始化水印设置
|
||||||
*/
|
*/
|
||||||
InitWatermarkSetting() {
|
private InitWatermarkSetting() {
|
||||||
return {
|
let defaultData = {
|
||||||
selectModel: RemoveWatermarkType.LOCAL_LAMA,
|
selectModel: RemoveWatermarkType.LOCAL_LAMA,
|
||||||
iopaint: {
|
iopaint: {
|
||||||
url: undefined
|
url: "http://127.0.0.1:8080/"
|
||||||
}
|
}
|
||||||
} as ImageModel.RemoveWatermarkSetting
|
} as ImageModel.RemoveWatermarkSetting
|
||||||
|
|
||||||
|
this.softwareService.SaveSoftwarePropertyData('watermarkSetting', JSON.stringify(defaultData))
|
||||||
|
return defaultData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -51,15 +54,17 @@ export class Watermark {
|
|||||||
async GetWatermarkSetting() {
|
async GetWatermarkSetting() {
|
||||||
try {
|
try {
|
||||||
await this.InitService();
|
await this.InitService();
|
||||||
let watermarkSetting = this.InitWatermarkSetting();
|
let watermarkSetting = undefined;
|
||||||
let setting = this.softwareService.GetSoftWarePropertyData("watermarkSetting");
|
let setting = this.softwareService.GetSoftWarePropertyData("watermarkSetting");
|
||||||
if (!isEmpty(setting)) {
|
if (!isEmpty(setting)) {
|
||||||
// 直接初始化
|
// 初始化
|
||||||
let tryP = ValidateJson(setting);
|
let tryP = ValidateJson(setting);
|
||||||
if (!tryP) {
|
if (!tryP) {
|
||||||
throw new Error('解析去除水印的设置失败,数据格式不正确')
|
throw new Error('解析去除水印的设置失败,数据格式不正确')
|
||||||
}
|
}
|
||||||
watermarkSetting = JSON.parse(setting);
|
watermarkSetting = JSON.parse(setting);
|
||||||
|
} else {
|
||||||
|
watermarkSetting = this.InitWatermarkSetting()
|
||||||
}
|
}
|
||||||
return successMessage(watermarkSetting, '获取去除水印的设置成功', 'Image_GetWatermarkSetting')
|
return successMessage(watermarkSetting, '获取去除水印的设置成功', 'Image_GetWatermarkSetting')
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@ -27,6 +27,12 @@ export class Writing extends ServiceBase {
|
|||||||
axios.defaults.baseURL = define.serverUrl
|
axios.defaults.baseURL = define.serverUrl
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文案处理,GPT进行推理
|
||||||
|
* @param {*} setting
|
||||||
|
* @param {*} word
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
async ActionStart(setting, word) {
|
async ActionStart(setting, word) {
|
||||||
try {
|
try {
|
||||||
await this.InitService()
|
await this.InitService()
|
||||||
|
|||||||
@ -144,16 +144,6 @@ app.whenReady().then(async () => {
|
|||||||
optimizer.watchWindowShortcuts(window)
|
optimizer.watchWindowShortcuts(window)
|
||||||
})
|
})
|
||||||
|
|
||||||
global.logger = new Logger(define.logger_path)
|
|
||||||
// 同步数据
|
|
||||||
await AutoSync()
|
|
||||||
|
|
||||||
global.newWindow = []
|
|
||||||
mainWindow = await createWindow('ShowMessage', null)
|
|
||||||
|
|
||||||
global.requestQuene = new AsyncQueue(global, global.config.task_number)
|
|
||||||
global.fileQueue = new AsyncQueue(global, 1)
|
|
||||||
|
|
||||||
//判断是不是又配置文件,没有的话,将temp中的基础配置加载
|
//判断是不是又配置文件,没有的话,将temp中的基础配置加载
|
||||||
// 判断文件夹是不是存在
|
// 判断文件夹是不是存在
|
||||||
let config_p = path.dirname(define.config_path)
|
let config_p = path.dirname(define.config_path)
|
||||||
@ -206,6 +196,16 @@ app.whenReady().then(async () => {
|
|||||||
mainWindow = createWindow('ShowMessage', null)
|
mainWindow = createWindow('ShowMessage', null)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
global.logger = new Logger(define.logger_path)
|
||||||
|
// 同步数据
|
||||||
|
await AutoSync()
|
||||||
|
|
||||||
|
global.newWindow = []
|
||||||
|
mainWindow = await createWindow('ShowMessage', null)
|
||||||
|
|
||||||
|
global.requestQuene = new AsyncQueue(global, global.config.task_number)
|
||||||
|
global.fileQueue = new AsyncQueue(global, 1)
|
||||||
})
|
})
|
||||||
|
|
||||||
// Quit when all windows are closed, except on macOS. There, it's common
|
// Quit when all windows are closed, except on macOS. There, it's common
|
||||||
|
|||||||
@ -34,7 +34,7 @@ async function GlobalAutoSync() {
|
|||||||
theme: 'light',
|
theme: 'light',
|
||||||
reverse_display_show: false,
|
reverse_display_show: false,
|
||||||
reverse_show_book_striped: false,
|
reverse_show_book_striped: false,
|
||||||
reverse_data_table_size: 'samll',
|
reverse_data_table_size: 'small',
|
||||||
globalSetting: initGlobalConfig
|
globalSetting: initGlobalConfig
|
||||||
})
|
})
|
||||||
if (addSfotwareRes.code == 1) {
|
if (addSfotwareRes.code == 1) {
|
||||||
@ -187,7 +187,7 @@ async function AutoSyncMJConfig2210() {
|
|||||||
theme: 'light',
|
theme: 'light',
|
||||||
reverse_display_show: false,
|
reverse_display_show: false,
|
||||||
reverse_show_book_striped: false,
|
reverse_show_book_striped: false,
|
||||||
reverse_data_table_size: 'samll'
|
reverse_data_table_size: 'small'
|
||||||
}
|
}
|
||||||
let res = await _softwareService.AddSfotware(softData)
|
let res = await _softwareService.AddSfotware(softData)
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
|
|||||||
@ -13,6 +13,32 @@ export class GptSetting extends ServiceBase {
|
|||||||
axios.defaults.baseURL = define.serverUrl
|
axios.defaults.baseURL = define.serverUrl
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化数据
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
async InitAISetting() {
|
||||||
|
let defaultData = {
|
||||||
|
laiapi: {
|
||||||
|
gpt_url: 'https://laitool.net/v1/chat/completions',
|
||||||
|
api_key: "请输入你的LAI API 的 Key",
|
||||||
|
model: "请输入你的LAI API 的 Model名称"
|
||||||
|
},
|
||||||
|
kimi: {
|
||||||
|
gpt_url: 'https://api.moonshot.cn/v1/chat/completions',
|
||||||
|
api_key: "请输入你的Kimi API 的 Key",
|
||||||
|
model: "请输入你的Kimi API 的 Model名称"
|
||||||
|
},
|
||||||
|
doubao: {
|
||||||
|
gpt_url: 'https://ark.cn-beijing.volces.com/api/v3/chat/completions',
|
||||||
|
api_key: "请输入你的Doubao API 的 Key",
|
||||||
|
model: "请输入你的Doubao API 的 Model名称"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await this.SaveAISetting(defaultData)
|
||||||
|
return defaultData
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取服务强上面的提示词相关的数据
|
* 获取服务强上面的提示词相关的数据
|
||||||
*/
|
*/
|
||||||
@ -43,34 +69,18 @@ export class GptSetting extends ServiceBase {
|
|||||||
async GetAISetting() {
|
async GetAISetting() {
|
||||||
try {
|
try {
|
||||||
await this.InitService()
|
await this.InitService()
|
||||||
|
let aiSetting = undefined
|
||||||
let res = this.softService.GetSoftWarePropertyData('aiSetting')
|
let res = this.softService.GetSoftWarePropertyData('aiSetting')
|
||||||
if (isEmpty(res)) {
|
if (isEmpty(res)) {
|
||||||
// 没有数据需要额外初始化
|
aiSetting = await this.InitAISetting();
|
||||||
res.data = {
|
|
||||||
laiapi: {
|
|
||||||
gpt_url: 'https://laitool.net/v1/chat/completions',
|
|
||||||
api_key: undefined,
|
|
||||||
model: undefined
|
|
||||||
},
|
|
||||||
kimi: {
|
|
||||||
gpt_url: 'https://api.moonshot.cn/v1/chat/completions',
|
|
||||||
api_key: undefined,
|
|
||||||
model: undefined
|
|
||||||
},
|
|
||||||
doubao: {
|
|
||||||
gpt_url: 'https://ark.cn-beijing.volces.com/api/v3/chat/completions',
|
|
||||||
api_key: undefined,
|
|
||||||
model: undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
let tryP = ValidateJson(res)
|
let tryP = ValidateJson(res)
|
||||||
if (!tryP) {
|
if (!tryP) {
|
||||||
throw new Error('AI设置的数据格式不正确')
|
throw new Error('AI设置的数据格式不正确')
|
||||||
}
|
}
|
||||||
res = JSON.parse(res)
|
aiSetting = JSON.parse(res)
|
||||||
}
|
}
|
||||||
return successMessage(res, '请求成功', 'GptSetting_GetAISetting')
|
return successMessage(aiSetting, '请求成功', 'GptSetting_GetAISetting')
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return errorMessage(
|
return errorMessage(
|
||||||
'获取软件设置里面的AI设置错误,错误信息如下:' + error.toString(),
|
'获取软件设置里面的AI设置错误,错误信息如下:' + error.toString(),
|
||||||
@ -15,6 +15,21 @@ export class WritingSetting {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async InitWritingConfig() {
|
||||||
|
let defaultConfig = {
|
||||||
|
split_char: '。,“”‘’!?【】《》()…—:;.,\'\'""!?[]<>()...-:;',
|
||||||
|
mrege_count: 3,
|
||||||
|
mrege_char: ',',
|
||||||
|
end_char: '。',
|
||||||
|
merge_count: 4,
|
||||||
|
merge_char: ',',
|
||||||
|
isRandom: true,
|
||||||
|
randomCount: 0
|
||||||
|
}
|
||||||
|
await this.SaveWriteConfig(defaultConfig)
|
||||||
|
return defaultConfig
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取文案的相关配置
|
* 获取文案的相关配置
|
||||||
*/
|
*/
|
||||||
@ -23,16 +38,7 @@ export class WritingSetting {
|
|||||||
await this.InitService()
|
await this.InitService()
|
||||||
let res = this.softService.GetSoftWarePropertyData('writeSetting')
|
let res = this.softService.GetSoftWarePropertyData('writeSetting')
|
||||||
if (isEmpty(res)) {
|
if (isEmpty(res)) {
|
||||||
res.data = JSON.stringify({
|
res = this.InitWritingConfig()
|
||||||
split_char: '。,“”‘’!?【】《》()…—:;.,\'\'""!?[]<>()...-:;',
|
|
||||||
mrege_count: 3,
|
|
||||||
mrege_char: ',',
|
|
||||||
end_char: '。',
|
|
||||||
merge_count: 4,
|
|
||||||
merge_char: ',',
|
|
||||||
isRandom: true,
|
|
||||||
randomCount: 0
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
let tryP = ValidateJson(res)
|
let tryP = ValidateJson(res)
|
||||||
if (!tryP) {
|
if (!tryP) {
|
||||||
|
|||||||
@ -452,21 +452,21 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
label: () =>
|
// label: () =>
|
||||||
h(
|
// h(
|
||||||
RouterLink,
|
// RouterLink,
|
||||||
{
|
// {
|
||||||
to: {
|
// to: {
|
||||||
name: 'test_options'
|
// name: 'test_options'
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
default: () => '测试操作'
|
// default: () => '测试操作'
|
||||||
}
|
// }
|
||||||
),
|
// ),
|
||||||
key: 'test_options'
|
// key: 'test_options'
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
label: () =>
|
label: () =>
|
||||||
h(
|
h(
|
||||||
|
|||||||
@ -154,7 +154,6 @@ export default defineComponent({
|
|||||||
await window.mj.SaveTagPropertyData(
|
await window.mj.SaveTagPropertyData(
|
||||||
[JSON.stringify(styleData.value), 'style_tags'],
|
[JSON.stringify(styleData.value), 'style_tags'],
|
||||||
(value) => {
|
(value) => {
|
||||||
|
|
||||||
console.log(value)
|
console.log(value)
|
||||||
if (value.code == 0) {
|
if (value.code == 0) {
|
||||||
message.error(value.message)
|
message.error(value.message)
|
||||||
@ -217,8 +216,7 @@ export default defineComponent({
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
let rules = {
|
let rules = {
|
||||||
label: ruleObj('必填人物名称'),
|
label: ruleObj('必填人物名称')
|
||||||
prompt: ruleObj('必填英文提示词')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -246,7 +244,6 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
imageLoading.value = true
|
imageLoading.value = true
|
||||||
await window.sd.txt2img(JSON.stringify([d]), async (value) => {
|
await window.sd.txt2img(JSON.stringify([d]), async (value) => {
|
||||||
|
|
||||||
if (value.code == 0) {
|
if (value.code == 0) {
|
||||||
message.error(value.message)
|
message.error(value.message)
|
||||||
imageLoading.value = false
|
imageLoading.value = false
|
||||||
|
|||||||
@ -1016,7 +1016,9 @@ export default defineComponent({
|
|||||||
for (let i = 0; i < promptStore.GetSelectStyle.length; i++) {
|
for (let i = 0; i < promptStore.GetSelectStyle.length; i++) {
|
||||||
const element = promptStore.GetSelectStyle[i]
|
const element = promptStore.GetSelectStyle[i]
|
||||||
if (element.type == 'style_main') {
|
if (element.type == 'style_main') {
|
||||||
style_string += element.prompt + ', '
|
if (element.prompt) {
|
||||||
|
style_string += element.prompt + ', '
|
||||||
|
}
|
||||||
if (element.lora && element.lora != '无' && element.lora_weight) {
|
if (element.lora && element.lora != '无' && element.lora_weight) {
|
||||||
style_string += `<lora:${element.lora}:${element.lora_weight}>, `
|
style_string += `<lora:${element.lora}:${element.lora_weight}>, `
|
||||||
}
|
}
|
||||||
@ -1114,7 +1116,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
console.log(prompt_str)
|
console.log(prompt_str)
|
||||||
prompt_str = prompt_str.replace('${style}', style_str)
|
prompt_str = prompt_str.replace('${style}', style_str ? style_str : '')
|
||||||
prompt_str = prompt_str.replace('${character}', character_string)
|
prompt_str = prompt_str.replace('${character}', character_string)
|
||||||
prompt_str = prompt_str.replace('${scene}', scene_string)
|
prompt_str = prompt_str.replace('${scene}', scene_string)
|
||||||
prompt_str = prompt_str.replace(
|
prompt_str = prompt_str.replace(
|
||||||
@ -1139,7 +1141,9 @@ export default defineComponent({
|
|||||||
for (let i = 0; i < promptStore.GetSelectStyle.length; i++) {
|
for (let i = 0; i < promptStore.GetSelectStyle.length; i++) {
|
||||||
const element = promptStore.GetSelectStyle[i]
|
const element = promptStore.GetSelectStyle[i]
|
||||||
if (element.type == 'style_main') {
|
if (element.type == 'style_main') {
|
||||||
style_str += element.prompt + ', '
|
if (element.prompt) {
|
||||||
|
style_str += element.prompt + ', '
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
style_str += element.english_style + ', '
|
style_str += element.english_style + ', '
|
||||||
}
|
}
|
||||||
|
|||||||
@ -91,6 +91,7 @@
|
|||||||
<n-input
|
<n-input
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="请输入密钥"
|
placeholder="请输入密钥"
|
||||||
|
show-password-on="mousedown"
|
||||||
v-model:value="mjSetting.apiSetting.apiKey"
|
v-model:value="mjSetting.apiSetting.apiKey"
|
||||||
></n-input>
|
></n-input>
|
||||||
</n-form-item>
|
</n-form-item>
|
||||||
|
|||||||
@ -475,8 +475,8 @@ export default defineComponent({
|
|||||||
value: LaiAPIType.HK_PROXY
|
value: LaiAPIType.HK_PROXY
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '香港站点',
|
label: '备用主站点',
|
||||||
value: LaiAPIType.HK_PROXY
|
value: LaiAPIType.BAK_MAIN
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
translation_options: [
|
translation_options: [
|
||||||
|
|||||||
@ -125,7 +125,7 @@ export default defineComponent({
|
|||||||
// 判断当前选中的数据是不是设置完善
|
// 判断当前选中的数据是不是设置完善
|
||||||
let selectModel = translateSetting.value.selectModel
|
let selectModel = translateSetting.value.selectModel
|
||||||
let settingIndex = translateSetting.value.translates.findIndex(
|
let settingIndex = translateSetting.value.translates.findIndex(
|
||||||
(item) => (item.name = selectModel)
|
(item) => (item.name == selectModel)
|
||||||
)
|
)
|
||||||
if (settingIndex < 0) {
|
if (settingIndex < 0) {
|
||||||
message.error('未找到选中的数据,请检查')
|
message.error('未找到选中的数据,请检查')
|
||||||
|
|||||||
@ -138,6 +138,7 @@ export default defineComponent({
|
|||||||
let audioUrl = ref(null)
|
let audioUrl = ref(null)
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
debugger
|
||||||
ttsOptions.value = GetTTSSelect()
|
ttsOptions.value = GetTTSSelect()
|
||||||
|
|
||||||
// 加载服务端的TTS配置(目前的TTS配置是全局的)
|
// 加载服务端的TTS配置(目前的TTS配置是全局的)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user