From 79a1929e79a4c70806bdbb48422339a4e7b4c076 Mon Sep 17 00:00:00 2001
From: lq1405 <2769838458@qq.com>
Date: Thu, 13 Jun 2024 00:37:31 +0800
Subject: [PATCH] =?UTF-8?q?V=202.2.9=20=E8=87=AA=E5=8A=A8=E5=8C=B9?=
=?UTF-8?q?=E9=85=8D=EF=BC=8C=E6=89=8B=E5=8A=A8=E6=8E=92=E5=BA=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
electron.vite.config.1710168376515.mjs | 1 -
package-lock.json | 55 +-
package.json | 7 +-
resources/scripts/requirements.txt | 298 +++++
src/api/discordApi.js | 10 +-
src/define/define_string.js | 15 +-
src/define/logger_define.js | 12 +
src/define/setting/dynamicSetting.js | 66 +
src/define/setting/imageSetting.js | 4 +-
src/main/IPCEvent/index.js | 32 +
src/main/IPCEvent/mjIpc.js | 3 +
src/main/IPCEvent/promptIpc.js | 18 +
src/main/IPCEvent/settingIpc.js | 17 +
src/main/Original/MJOriginalImageGenerate.js | 133 +-
src/main/Original/OriginalImageGenerate.js | 3 +-
src/main/Public/Image.js | 2 +-
src/main/Public/Prompt.js | 82 ++
src/main/Public/SD.js | 2 +-
src/main/backPrompt/imageGenerate.js | 14 +-
src/main/backPrompt/videoGenerate.js | 6 +-
src/main/discord/discordScript.js | 2 +-
src/main/discord/discordSimple.js | 2 +-
src/main/func.js | 8 +-
src/main/generalTools.js | 8 +-
src/main/index.js | 30 +-
src/main/setting/setting.js | 11 +-
src/preload/index.js | 16 +-
src/preload/mj.js | 3 +
src/preload/prompt.js | 17 +
src/preload/setting.js | 17 +
src/renderer/src/App.vue | 2 +-
.../Backstep/BatchSaveImageSetting.vue | 2 +-
.../src/components/Backstep/CopyWriting.vue | 4 +-
.../src/components/Backstep/GetFrame.vue | 4 +-
.../src/components/Backstep/OneKeyMatrix.vue | 8 +-
.../components/Backstep/PushBackPrompt.vue | 2 +-
.../src/components/Backstep/ReGenerate.vue | 14 +-
.../components/Backstep/oneImageReDrwa.vue | 2 +-
src/renderer/src/components/Clip/AddDraft.vue | 2 +-
.../src/components/Clip/AlignDraft.vue | 2 +-
.../Components/DynamicTagsSelect.vue | 158 +++
.../Components/GenerateAllImages.vue | 10 +-
.../components/Components/ManageBadPrompt.vue | 4 +-
.../Components/ModifyPromptChinese.vue | 4 +-
.../Components/SelectImageStyle.vue | 10 +-
.../components/Components/ShowImageTag.vue | 2 +-
src/renderer/src/components/Home/Home.vue | 17 +-
.../src/components/Home/ReDrawImageWD.vue | 16 +-
.../Original/Components/AddCharacterTag.vue | 15 +-
.../Original/Components/AddPrefixTags.vue | 2 +-
.../Original/Components/AddSceneTags.vue | 280 +++--
.../Original/Components/AddStyleTags.vue | 4 +-
.../Original/Components/AddSuffixTags.vue | 2 +-
.../Original/Components/CharacterAnalyze.vue | 2 +-
.../Original/Components/CharacterTags.vue | 15 +-
.../Components/DataTableCharacterAndScene.vue | 126 +-
.../Components/DataTableGptPromptRow.vue | 2 +-
.../Components/DataTableParameterRow.vue | 2 +-
.../Components/DataTablePromptRow.vue | 111 +-
.../Components/DataTableShowGenerateImage.vue | 20 +-
.../Original/Components/EditWord.vue | 27 +-
.../Original/Components/ImportWordAndSrt.vue | 6 +-
.../Original/Components/PromptSetting.vue | 3 -
.../src/components/Original/DataTable.vue | 509 ++++----
.../src/components/Original/MainPage.vue | 42 +-
.../src/components/Original/MenuButton.vue | 4 +-
.../src/components/Setting/ClipSetting.vue | 4 +-
.../Setting/Components/AddGptPrompts.vue | 6 +-
.../src/components/Setting/MJSetting.vue | 10 +-
.../src/components/Setting/SDSetting.vue | 4 +-
.../src/components/Setting/Setting.vue | 6 +-
.../Setting/VideoGenerateSetting.vue | 1078 +++++++++--------
.../src/components/Watermark/GetWaterMask.vue | 15 +-
src/renderer/src/main.js | 3 +
src/stores/image.js | 18 +
src/stores/prompt.js | 68 ++
76 files changed, 2499 insertions(+), 1042 deletions(-)
create mode 100644 resources/scripts/requirements.txt
create mode 100644 src/main/IPCEvent/index.js
create mode 100644 src/main/IPCEvent/promptIpc.js
create mode 100644 src/main/Public/Prompt.js
create mode 100644 src/preload/prompt.js
create mode 100644 src/preload/setting.js
create mode 100644 src/renderer/src/components/Components/DynamicTagsSelect.vue
create mode 100644 src/stores/image.js
create mode 100644 src/stores/prompt.js
diff --git a/electron.vite.config.1710168376515.mjs b/electron.vite.config.1710168376515.mjs
index fdf9f40..31d658d 100644
--- a/electron.vite.config.1710168376515.mjs
+++ b/electron.vite.config.1710168376515.mjs
@@ -2,7 +2,6 @@
import { resolve } from "path";
import { defineConfig, externalizeDepsPlugin } from "electron-vite";
import vue from "@vitejs/plugin-vue";
-import Jsx from "@vitejs/plugin-vue-jsx";
var electron_vite_config_default = defineConfig({
main: {
plugins: [externalizeDepsPlugin()]
diff --git a/package-lock.json b/package-lock.json
index 77c9a99..571406f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "laitool",
- "version": "2.2.8",
+ "version": "2.2.9",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "laitool",
- "version": "2.2.6",
+ "version": "2.2.8",
"hasInstallScript": true,
"dependencies": {
"@alicloud/alimt20181012": "^1.2.0",
@@ -35,6 +35,7 @@
"node-reg": "^0.2.4",
"npm": "^10.7.0",
"paddle": "^1.0.0",
+ "pinia": "^2.1.7",
"sharp": "^0.33.2",
"systeminformation": "^5.22.10",
"tencentcloud-sdk-nodejs": "^4.0.821",
@@ -9281,6 +9282,56 @@
"node": ">=6"
}
},
+ "node_modules/pinia": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.1.7.tgz",
+ "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": ">=0.14.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.4.0",
+ "typescript": ">=4.4.4",
+ "vue": "^2.6.14 || ^3.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pinia/node_modules/vue-demi": {
+ "version": "0.14.8",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.8.tgz",
+ "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
"node_modules/pixelmatch": {
"version": "4.0.2",
"license": "ISC",
diff --git a/package.json b/package.json
index 9dc9a74..f1df5f3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "laitool",
- "version": "2.2.8",
+ "version": "2.2.9",
"description": "An Electron application with Vue",
"main": "./out/main/index.js",
"author": "example.com",
@@ -43,6 +43,7 @@
"node-reg": "^0.2.4",
"npm": "^10.7.0",
"paddle": "^1.0.0",
+ "pinia": "^2.1.7",
"sharp": "^0.33.2",
"systeminformation": "^5.22.10",
"tencentcloud-sdk-nodejs": "^4.0.821",
@@ -85,8 +86,6 @@
"resources/scripts/model/**",
"resources/scripts/Lai.exe",
"resources/scripts/_internal/**",
- "resources/scripts/lama/lama_inpaint.exe",
- "resources/scripts/lama/model/**",
"resources/scripts/discordScript.js",
"resources/tmp/**",
"resources/icon.ico"
@@ -95,4 +94,4 @@
"icon": "./resources/icon.ico"
}
}
-}
\ No newline at end of file
+}
diff --git a/resources/scripts/requirements.txt b/resources/scripts/requirements.txt
new file mode 100644
index 0000000..b45888f
--- /dev/null
+++ b/resources/scripts/requirements.txt
@@ -0,0 +1,298 @@
+accelerate==0.30.1
+addict==2.4.0
+aiofiles==23.2.1
+aiohttp==3.8.6
+aiosignal==1.3.1
+alibabacloud-bailian20230601==1.6.1
+alibabacloud-credentials==0.3.3
+alibabacloud-endpoint-util==0.0.3
+alibabacloud-gateway-spi==0.0.1
+alibabacloud-openapi-util==0.2.2
+alibabacloud-tea==0.3.6
+alibabacloud-tea-openapi==0.3.9
+alibabacloud-tea-util==0.3.12
+alibabacloud-tea-xml==0.0.2
+aliyun-python-sdk-core==2.15.0
+aliyun-python-sdk-kms==2.16.2
+altair==5.3.0
+altgraph==0.17.4
+annotated-types==0.6.0
+anthropic==0.26.1
+antlr4-python3-runtime==4.9.3
+anyio==4.3.0
+APScheduler==3.10.4
+arxiv==2.1.0
+astor==0.8.1
+asttokens==2.4.1
+async-timeout==4.0.3
+attrdict==2.0.1
+attrs==23.2.0
+av==11.0.0
+azure-cognitiveservices-speech==1.37.0
+Babel==2.15.0
+backports.tarfile==1.1.1
+baidu-aip==4.16.13
+bce-python-sdk==0.9.11
+beautifulsoup4==4.12.3
+bidict==0.23.1
+blinker==1.8.2
+broadscope-bailian==1.3.1
+cachetools==5.3.3
+certifi==2024.2.2
+cffi==1.16.0
+cfgv==3.4.0
+chardet==5.2.0
+charset-normalizer==3.3.2
+chatgpt-tool-hub==0.5.0
+cheroot==10.0.1
+click==8.1.7
+colorama==0.4.6
+coloredlogs==15.0.1
+comtypes==1.4.2
+contourpy==1.2.1
+controlnet-aux==0.0.3
+crcmod==1.7
+cryptography==42.0.5
+cssselect==1.2.0
+cssutils==2.11.0
+ctranslate2==4.1.0
+curl_cffi==0.6.4
+cx-Logging==3.1.0
+cx_Freeze==6.15.16
+cycler==0.12.1
+Cython==3.0.10
+dashscope==1.19.2
+datasets==2.18.0
+decorator==4.4.2
+diffusers==0.27.2
+dill==0.3.8
+dingtalk-stream==0.18.1
+distlib==0.3.8
+distro==1.9.0
+dnspython==2.6.1
+dulwich==0.22.1
+easydict==1.13
+edge-tts==6.1.12
+einops==0.7.0
+elevenlabs==1.0.3
+email_validator==2.1.1
+et-xmlfile==1.1.0
+exceptiongroup==1.2.1
+executing==2.0.1
+fastapi==0.108.0
+fastapi-cli==0.0.2
+faster-whisper==1.0.1
+feedparser==6.0.10
+ffmpy==0.3.2
+filelock==3.13.1
+fire==0.6.0
+Flask==3.0.3
+flask-babel==4.0.0
+flatbuffers==24.3.7
+fonttools==4.53.0
+frozenlist==1.4.1
+fsspec==2024.2.0
+future==1.0.0
+gast==0.5.4
+google-ai-generativelanguage==0.6.4
+google-api-core==2.19.0
+google-api-python-client==2.130.0
+google-auth==2.29.0
+google-auth-httplib2==0.2.0
+google-generativeai==0.5.4
+googleapis-common-protos==1.63.0
+gradio==4.21.0
+gradio_client==0.12.0
+grpcio==1.64.0
+grpcio-status==1.62.2
+gTTS==2.5.1
+h11==0.14.0
+HTMLParser==0.0.2
+httpcore==1.0.5
+httplib2==0.22.0
+httptools==0.6.1
+httpx==0.27.0
+huggingface-hub==0.23.2
+humanfriendly==10.0
+identify==2.5.36
+idna==3.6
+imageio==2.34.0
+imageio-ffmpeg==0.4.9
+imgaug==0.4.0
+importlib_metadata==7.0.2
+importlib_resources==6.4.0
+install==1.3.5
+IOPaint==1.3.3
+ipython==8.24.0
+itsdangerous==2.2.0
+jaraco.context==5.3.0
+jaraco.functools==4.0.1
+jedi==0.19.1
+Jinja2==3.1.3
+jiter==0.4.0
+jmespath==0.10.0
+jsonschema==4.22.0
+jsonschema-specifications==2023.12.1
+kiwisolver==1.4.5
+langid==1.1.6
+lazy_loader==0.4
+lief==0.14.1
+linkai==0.0.6.0
+lmdb==1.4.1
+loguru==0.7.2
+lxml==5.2.2
+markdown-it-py==3.0.0
+MarkupSafe==2.1.5
+matplotlib==3.9.0
+matplotlib-inline==0.1.7
+mdurl==0.1.2
+modelscope==1.13.1
+more-itertools==10.2.0
+moviepy==1.0.3
+mpmath==1.3.0
+multidict==6.0.5
+multiprocess==0.70.16
+networkx==3.2.1
+nodeenv==1.8.0
+Nuitka==2.1.2
+numpy==1.24.2
+omegaconf==2.3.0
+onnxruntime==1.17.1
+openai==0.27.8
+opencv-contrib-python==4.6.0.66
+opencv-python==4.6.0.66
+opencv-python-headless==4.9.0.80
+openpyxl==3.1.2
+opt-einsum==3.3.0
+optionaldict==0.1.2
+ordered-set==4.1.0
+orjson==3.10.3
+oss2==2.18.4
+packaging==24.0
+paddleocr==2.7.3
+paddlepaddle==2.6.1
+pandas==2.2.1
+parso==0.8.4
+pdf2docx==0.5.8
+pefile==2023.2.7
+peft==0.7.1
+piexif==1.1.3
+pillow==10.3.0
+platformdirs==4.2.0
+pre-commit==3.7.1
+premailer==3.10.0
+proglog==0.1.10
+prompt-toolkit==3.0.43
+proto-plus==1.23.0
+protobuf==3.20.2
+psutil==5.9.8
+pure-eval==0.2.2
+pyarrow==15.0.1
+pyarrow-hotfix==0.6
+pyasn1==0.6.0
+pyasn1_modules==0.4.0
+pyclipper==1.3.0.post5
+pycparser==2.21
+pycryptodome==3.20.0
+pydantic==2.5.3
+pydantic_core==2.14.6
+pydub==0.25.1
+Pygments==2.18.0
+pyinstaller==6.5.0
+pyinstaller-hooks-contrib==2024.3
+PyJWT==2.8.0
+PyMuPDF==1.24.5
+PyMuPDFb==1.24.3
+pyOpenSSL==24.1.0
+pyoxidizer==0.24.0
+pyparsing==3.1.2
+pypiwin32==223
+pypng==0.20220715.0
+PyQRCode==1.2.1
+pyreadline3==3.4.1
+pytesseract==0.3.10
+python-dateutil==2.9.0.post0
+python-docx==1.1.2
+python-dotenv==1.0.1
+python-engineio==4.9.1
+python-multipart==0.0.9
+python-socketio==5.7.2
+pyttsx3==2.90
+pytz==2024.1
+pywin32==306
+pywin32-ctypes==0.2.2
+PyYAML==6.0.1
+qrcode==7.4.2
+rapidfuzz==3.9.3
+rarfile==4.2
+referencing==0.35.1
+regex==2024.5.15
+requests==2.31.0
+rich==13.7.1
+rpds-py==0.18.1
+rsa==4.9
+ruff==0.4.7
+safetensors==0.4.3
+scenedetect==0.6.3
+scikit-image==0.23.2
+scipy==1.12.0
+semantic-version==2.10.0
+sgmllib3k==1.0.0
+shapely==2.0.4
+shellingham==1.5.4
+simple-websocket==1.0.0
+simplejson==3.19.2
+six==1.16.0
+sniffio==1.3.1
+sortedcontainers==2.4.0
+soupsieve==2.5
+SpeechRecognition==3.10.4
+stack-data==0.6.3
+starlette==0.32.0.post1
+sympy==1.12
+tenacity==8.2.3
+termcolor==2.4.0
+tifffile==2024.5.22
+tiktoken==0.4.0
+timm==1.0.3
+tokenizers==0.19.1
+tomli==2.0.1
+tomlkit==0.12.0
+toolz==0.12.1
+torch==2.1.2+cu118
+torchvision==0.16.2+cu118
+tqdm==4.66.2
+traitlets==5.14.3
+transformers==4.41.2
+typer==0.12.3
+typer-config==1.4.0
+typing_extensions==4.10.0
+tzdata==2024.1
+tzlocal==5.2
+ujson==5.9.0
+uritemplate==4.1.1
+urllib3==2.2.1
+utility==1.0
+uvicorn==0.29.0
+virtualenv==20.26.2
+visualdl==2.5.3
+watchfiles==0.21.0
+wcwidth==0.2.13
+web.py==0.62
+websocket-client==1.2.0
+websockets==11.0.3
+wechatpy==1.8.18
+Werkzeug==3.0.3
+wikipedia==1.4.0
+win32-setctime==1.1.0
+wolframalpha==5.0.0
+wsproto==1.2.0
+xlrd==2.0.1
+xmltodict==0.13.0
+xxhash==3.4.1
+yacs==0.1.8
+yapf==0.40.2
+yarl==1.9.4
+zhipuai==2.1.0.20240521
+zipp==3.18.1
+zstandard==0.22.0
diff --git a/src/api/discordApi.js b/src/api/discordApi.js
index 467517c..31728f3 100644
--- a/src/api/discordApi.js
+++ b/src/api/discordApi.js
@@ -87,15 +87,7 @@ export class DiscordAPI {
if (typeof res_data == "string") {
res_data = JSON.parse(res_data);
}
- if (res_data && res_data.code != 1) {
- if (res_data.message) {
- throw new Error(res_data.message);
- } else if (res_data.description) {
- throw new Error(res_data.description)
- } else {
- throw new Error("未知错误,可联系管理员排查");
- }
- }
+ // 直接返回,错误信息外面判断
return res_data;
} catch (error) {
throw error;
diff --git a/src/define/define_string.js b/src/define/define_string.js
index 61761c9..64b1bda 100644
--- a/src/define/define_string.js
+++ b/src/define/define_string.js
@@ -6,6 +6,7 @@ export const DEFINE_STRING = {
GET_DEFINE_CONFIG_JSON_BY_PROPERTY: "GET_DEFINE_CONFIG_JSON_BY_PROPERTY",
GET_IMAGE_GENERATE_CATEGORY: "GET_IMAGE_GENERATE_CATEGORY",
SHOW_MAIN_NOTIFICATION: "SHOW_MAIN_NOTIFICATION",
+ SHOW_GLOABAL_MESSAGE: "SHOW_GLOABAL_MESSAGE",
CHECK_MACHINE_ID: "CHECK_MACHINE_ID",
GET_CUSTOMIZE_GPT_PROMPT: "GET_CUSTOMIZE_GPT_PROMPT",
GENERATE_GPT_EXAMPLE_OUT: "GENERATE_GPT_EXAMPLE_OUT",
@@ -159,7 +160,9 @@ export const DEFINE_STRING = {
GET_GENERATED_MJ_IMAGE_AND_SPLIT: "GET_GENERATED_MJ_IMAGE_AND_SPLIT",
DOWNLOAD_IMAGE_URL_AND_SPLIT: "DOWNLOAD_IMAGE_URL_AND_SPLIT",
GET_MJ_IMAGE_SCALE: 'GET_MJ_IMAGE_SCALE',
- GET_MJ_IMAGE_ROBOT_MODEL: "GET_MJ_IMAGE_ROBOT_MODEL"
+ GET_MJ_IMAGE_ROBOT_MODEL: "GET_MJ_IMAGE_ROBOT_MODEL",
+ MACTH_USER_RETURN: "MACTH_USER_RETURN",
+ AUTO_MATCH_USER: "AUTO_MATCH_USER",
},
DISCORD: {
OPERATE_REFRASH_DISCORD_URL: "OPERATE_REFRASH_DISCORD_URL",
@@ -188,5 +191,15 @@ export const DEFINE_STRING = {
},
SYSTEM: {
OPEN_FILE: "OPEN_FILE",
+ },
+ SETTING: {
+ GET_DATA_BY_TYPE_AND_PROPERTY: "GET_DATA_BY_TYPE_AND_PROPERTY",
+ SAVE_DATA_BY_TYPE_AND_PROPERTY: "SAVE_DATA_BY_TYPE_AND_PROPERTY",
+ DELETE_DATA_BY_TYPE_AND_PROPERTY: "DELETE_DATA_BY_TYPE_AND_PROPERTY",
+ },
+ PROMPT: {
+ GET_SORT_OPTIONS: "GET_SORT_OPTIONS",
+ SAVE_PROMPT_SORT_DATA: "SAVE_PROMPT_SORT_DATA",
+ GET_PROMPT_SORT_DATA: "GET_PROMPT_SORT_DATA"
}
}
\ No newline at end of file
diff --git a/src/define/logger_define.js b/src/define/logger_define.js
index da291df..effea38 100644
--- a/src/define/logger_define.js
+++ b/src/define/logger_define.js
@@ -1,3 +1,15 @@
export const LOGGER_DEFINE = {
+
REMOVE_WATERMARK: "去除水印",
+ ORIGINAL_AUTO_MATCH_USER: "原创自动匹配用户",
+
+ PROMPT: {
+ GET_PROMPT_SORT_OPTIONS: "获取所有的排序选项",
+ SAVE_PROMPT_SORT_DATA: "保存提示词排序的数据",
+ GET_PROMPT_SORT_DATA: "获取提示词排序的数据"
+ },
+
+ GLOBAL: {
+ PARAM_ERROR: "参数错误",
+ }
}
\ No newline at end of file
diff --git a/src/define/setting/dynamicSetting.js b/src/define/setting/dynamicSetting.js
index 2e523ee..1570b0e 100644
--- a/src/define/setting/dynamicSetting.js
+++ b/src/define/setting/dynamicSetting.js
@@ -2,6 +2,7 @@
let fspromises = require('fs').promises;
import { get, cloneDeep } from 'lodash';
import { define } from '../define';
+import { errorMessage } from '../../main/generalTools';
export class DynamicSetting {
constructor(global) {
@@ -114,6 +115,71 @@ export class DynamicSetting {
throw error;
}
}
+}
+// 初始化一个对象
+let dynamic = new DynamicSetting(global);
+/**
+ * 将传入的数据和当前的数据进行拼接返回,判断类型
+ * @param {*} value
+ */
+export async function GetDataByTypeAndProperty(value) {
+ try {
+ // 判断value的类型是不是string
+ if (typeof value == "string") {
+ value = JSON.parse(value);
+ }
+ // 判断必要的数据是不是存在
+ if (!value.mainType || !value.property) {
+ throw new Error("传入的数据不完整");
+ }
+ value.defaultData = value.defaultData ? value.defaultData : [];
+ let res = await dynamic.getDataByTypeAndProperty('dynamic', value.mainType, value.property, [], []);
+ return res;
+
+ } catch (error) {
+ return errorMessage(error.toString());
+ }
+
+}
+
+/**
+ * 保存数据,注意,这里不能传递回调函数
+ * @param {*} value
+ */
+export async function SaveDataByTypeAndProperty(value) {
+ try {
+ if (typeof value == "string") {
+ value = JSON.parse(value);
+ }
+ // 判断必要的数据是不是存在
+ if (!value.mainType || !value.property || !value.data) {
+ throw new Error("传入的数据不完整");
+ }
+ let res = await dynamic.saveDataByTypeAndProperty(value.data, value.mainType, value.property, null);
+ return res;
+ } catch (error) {
+ return errorMessage(error.toString());
+ }
+}
+
+/**
+ * 删除数据
+ * @param {*} value
+ */
+export async function DeleteDataByTypeAndProperty(value) {
+ try {
+ if (typeof value == "string") {
+ value = JSON.parse(value);
+ }
+ // 判断必要的数据是不是存在
+ if (!value.id || !value.mainType || !value.property) {
+ throw new Error("传入的数据不完整");
+ }
+ let res = await dynamic.deleteDataByTypeAndProperty(value.id, value.mainType, value.property);
+ return res;
+ } catch (error) {
+ return errorMessage(error.toString());
+ }
}
\ No newline at end of file
diff --git a/src/define/setting/imageSetting.js b/src/define/setting/imageSetting.js
index 2eefdb4..e239128 100644
--- a/src/define/setting/imageSetting.js
+++ b/src/define/setting/imageSetting.js
@@ -214,8 +214,8 @@ export const ImageSetting = {
* @param {*} value
* 0 define中的指定属性(指定的配置文件)
* 1 要获取的什么属性信息 property,property 为null,赶回当前配置文件的所有数据
- * 2 是不是要校验属性不存在
- * 3 属性没有找到的默认值
+ * 2 要写入的值
+ * 3 是不是要校验属性不存在
*/
async SaveDefineConfigJsonByProperty(value) {
try {
diff --git a/src/main/IPCEvent/index.js b/src/main/IPCEvent/index.js
new file mode 100644
index 0000000..1fe1677
--- /dev/null
+++ b/src/main/IPCEvent/index.js
@@ -0,0 +1,32 @@
+import { PromptIpc } from "./promptIpc"
+import { SettingIpc } from './settingIpc.js'
+import { ImageGenerateIpc } from './imageGenerateIpc.js'
+import { WritingIpc } from './writingIpc.js'
+import { VideoGenerateIpc } from './videoGenerateIpc'
+import { TranslateIpc } from './translateIpc.js'
+import { GptIpc } from './gptIpc.js'
+import { MjIpc } from './mjIpc.js'
+import { OriginalImageGenerateIpc } from './originalImageGenerateIpc'
+import { SdIpc } from './sdIpc.js'
+import { MainIpc } from './mainIpc.js'
+import { GlobalIpc } from "./globalIpc.js";
+import { ImageIpc } from "./imageIpc.js";
+import { SystemIpc } from "./system.js";
+
+export function RegisterIpc(createWindow) {
+ PromptIpc()
+ SettingIpc();
+ ImageGenerateIpc();
+ WritingIpc();
+ VideoGenerateIpc();
+ TranslateIpc();
+ GptIpc();
+ SdIpc();
+ MjIpc();
+ MainIpc(createWindow);
+ OriginalImageGenerateIpc();
+ GlobalIpc();
+ ImageIpc();
+ SystemIpc();
+}
+
diff --git a/src/main/IPCEvent/mjIpc.js b/src/main/IPCEvent/mjIpc.js
index c08092d..f92c720 100644
--- a/src/main/IPCEvent/mjIpc.js
+++ b/src/main/IPCEvent/mjIpc.js
@@ -63,6 +63,9 @@ function MjIpc() {
// 获取所有的MJ生图模型
ipcMain.handle(DEFINE_STRING.MJ.GET_MJ_IMAGE_ROBOT_MODEL, async (event) => await mjSimple.GetMJImageRobotModel());
+ // 自动匹配用户表标签
+ ipcMain.handle(DEFINE_STRING.MJ.AUTO_MATCH_USER, async (event, value) => await mJOriginalImageGenerate.AutoMatchUser(value));
+
/**
* 监听DISCORD界面创建消息,并修改数据
*/
diff --git a/src/main/IPCEvent/promptIpc.js b/src/main/IPCEvent/promptIpc.js
new file mode 100644
index 0000000..0cce8a8
--- /dev/null
+++ b/src/main/IPCEvent/promptIpc.js
@@ -0,0 +1,18 @@
+import { ipcMain } from "electron";
+import { DEFINE_STRING } from '../../define/define_string'
+import { Prompt } from "../Public/Prompt";
+let prompt = new Prompt();
+
+function PromptIpc() {
+ // 获取所有的排序选项
+ ipcMain.handle(DEFINE_STRING.PROMPT.GET_SORT_OPTIONS, (event) => prompt.GetPromptSortOptions());
+
+ // 保存提示词排序数据
+ ipcMain.handle(DEFINE_STRING.PROMPT.SAVE_PROMPT_SORT_DATA, (event, value) => prompt.SavePromptSort(value));
+
+ // 获取已经保存的提示词数据
+ ipcMain.handle(DEFINE_STRING.PROMPT.GET_PROMPT_SORT_DATA, (event) => prompt.GetPromptSort())
+}
+export {
+ PromptIpc
+}
\ No newline at end of file
diff --git a/src/main/IPCEvent/settingIpc.js b/src/main/IPCEvent/settingIpc.js
index 2461f43..5589912 100644
--- a/src/main/IPCEvent/settingIpc.js
+++ b/src/main/IPCEvent/settingIpc.js
@@ -2,11 +2,13 @@ const {
ipcMain, app
} = require("electron")
import { DEFINE_STRING } from '../../define/define_string'
+import { GetDataByTypeAndProperty, SaveDataByTypeAndProperty, DeleteDataByTypeAndProperty } from '../../define/setting/dynamicSetting';
import {
Setting
} from '../setting/setting'
let setting = new Setting(global);
+
async function SettingIpc() {
// 获取背景音乐配置列表
@@ -65,6 +67,21 @@ async function SettingIpc() {
// // 保存指定的配置文件里面指定的属性的数据
ipcMain.handle(DEFINE_STRING.SAVE_DEFINE_CONFIG_JSON_BY_PROPERTY, async (event, value) => await setting.SaveDefineConfigJsonByProperty(value))
+
+
+ //#region 动态设置(只是动态设置)
+
+ // 获取动态配置的的指定主分类,指定的属性的数据(只是获取动态的,type定死了dynamic)
+ ipcMain.handle(DEFINE_STRING.SETTING.GET_DATA_BY_TYPE_AND_PROPERTY, async (event, value) => await GetDataByTypeAndProperty(value));
+
+ // 保存动态配置的的指定主分类,指定的属性的数据
+ ipcMain.handle(DEFINE_STRING.SETTING.SAVE_DATA_BY_TYPE_AND_PROPERTY, async (event, value) => await SaveDataByTypeAndProperty(value));
+
+ // 删除动态配置的的指定主分类,指定的属性的数据
+ ipcMain.handle(DEFINE_STRING.SETTING.DELETE_DATA_BY_TYPE_AND_PROPERTY, async (event, value) => await DeleteDataByTypeAndProperty(value));
+
+ //#endregion
+
}
export {
diff --git a/src/main/Original/MJOriginalImageGenerate.js b/src/main/Original/MJOriginalImageGenerate.js
index bbeb19e..138a9b7 100644
--- a/src/main/Original/MJOriginalImageGenerate.js
+++ b/src/main/Original/MJOriginalImageGenerate.js
@@ -8,11 +8,14 @@ import { Tools } from "../tools";
import path from 'path'
import sharp from 'sharp'
import { define } from "../../define/define";
-import { AwesomeRegx } from "awesome-js";
+import { AwesomeHelp } from "awesome-js";
import { checkStringValueAddSuffix, errorMessage, successMessage } from "../generalTools";
import { ImageSetting } from "../../define/setting/imageSetting";
import { DiscordAPI } from "../../api/discordApi";
import { GPT } from "../Public/GPT";
+import { TagDefine } from "../../define/tagDefine";
+import { cloneDeep } from "lodash";
+import { LOGGER_DEFINE } from "../../define/logger_define";
const { v4: uuidv4 } = require('uuid');
/**
@@ -26,15 +29,122 @@ export class MJOriginalImageGenerate {
this.tools = new Tools();
this.discordAPI = new DiscordAPI();
this.gpt = new GPT(global);
+ this.tagDefine = new TagDefine(global);
}
/**
* 返回指定的人物到前端
* @param {*} data
*/
- sendChangeMessage(data) {
- this.global.newWindow[0].win.webContents.send(DEFINE_STRING.DISCORD.MAIN_DISCORD_MESSAGE_CHANGE, data);
+ sendChangeMessage(data, message_name = DEFINE_STRING.DISCORD.MAIN_DISCORD_MESSAGE_CHANGE) {
+ this.global.newWindow[0].win.webContents.send(message_name, data);
}
+ /**
+ * 通过文本自动匹配数据
+ * @param {*} value
+ */
+ async AutoMatchUser(value) {
+ try {
+ value = JSON.parse(value);
+ // 获取所有的角色数据,包括别名
+ // 获取所有的角色数据
+ let character_tags = await this.tagDefine.getTagDataByTypeAndProperty("dynamic", "character_tags");
+ if (character_tags.code == 0) {
+ return errorMessage("获取角色数据错误,错误信息如下:" + character_tags.message, LOGGER_DEFINE.ORIGINAL_AUTO_MATCH_USER)
+ }
+ character_tags = character_tags.data;
+ if (character_tags.length == 0) {
+ return errorMessage("请先添加角色数据", LOGGER_DEFINE.ORIGINAL_AUTO_MATCH_USER)
+ }
+ let character_tags_data = [];
+ for (let i = 0; i < character_tags.length; i++) {
+ let item = character_tags[i];
+ // 这边还要判断是不是显示(只有显示的才hi自动匹配)
+ if (!item.hasOwnProperty("isShow") || !item.isShow) {
+ continue;
+ }
+
+ let temp_name = [item.label];
+ // 判断当前的数是不是存在别名
+ if (item.children && item.children.length > 0) {
+ for (let j = 0; j < item.children.length; j++) {
+ const element = item.children[j];
+ temp_name.push(element.label);
+ }
+ }
+ character_tags_data.push({
+ key: item.key,
+ value: item.value,
+ names: temp_name
+ })
+ }
+ if (character_tags_data.length == 0) {
+ return errorMessage("当前没有显示的角色数据,请先选择哪些是要显示的角色数据", LOGGER_DEFINE.ORIGINAL_AUTO_MATCH_USER)
+ }
+
+
+ for (let i = 0; i < value.length; i++) {
+ const element = value[i];
+
+ let res_data = {
+ code: 1,
+ id: element.id, // 当前 data 的ID
+ match_character: [],
+ }
+
+ // 获取当前的字幕数据
+ let temp_sub = [];
+ for (let j = 0; element.suValue && j < element.suValue.length; j++) {
+ const element = array[j];
+ temp_sub.push(element.srt_value);
+ }
+ let word = "";
+ if (temp_sub.length == 0) {
+ word = element.after_gpt;
+ } else {
+ word = temp_sub.join(",");
+ }
+
+ let match_keys = [];
+
+ // 开始循环判断,只要又一个满足就跳出新婚换
+ for (let j = 0; j < character_tags_data.length; j++) {
+ const item = character_tags_data[j];
+ let names = AwesomeHelp.makeSensitiveMap(item.names);
+ // 开始判断
+ let name_res = AwesomeHelp.checkSensitiveWord(word, false, names);
+ if (name_res.size > 0) {
+ match_keys.push(item.key);
+ }
+ }
+
+ // 判断是不是又匹配到的数据
+ if (match_keys.length > 0) {
+ // 进行数据的处理,通过对应的key,获取对应的数据,将所有的数进行返回
+ for (let i = 0; i < match_keys.length; i++) {
+ const item = match_keys[i];
+ let index = character_tags.findIndex(x => x.key == item);
+ if (index == -1) {
+ continue;
+ }
+ let temp_item_data = cloneDeep(character_tags[index]);
+ if (temp_item_data.children) {
+ delete temp_item_data.children
+ }
+ res_data.match_character.push(temp_item_data)
+ }
+ }
+
+ // 开始往前端传递数据
+ this.sendChangeMessage(res_data, DEFINE_STRING.MJ.MACTH_USER_RETURN);
+ }
+ return successMessage(null, "人物标签自动匹配完成", LOGGER_DEFINE.ORIGINAL_AUTO_MATCH_USER)
+ } catch (error) {
+ return errorMessage("通过文本自动匹配数据错误,错误信息如下:" + error.message, LOGGER_DEFINE.ORIGINAL_AUTO_MATCH_USER)
+ }
+ }
+
+
/**
* 初始化MJ设置
*/
@@ -290,6 +400,11 @@ export class MJOriginalImageGenerate {
"Authorization": mjSetting.api_key
}
res = await this.discordAPI.mjApiImagine(imagine_url, data, headers);
+
+ if (res.code == 24) {
+ throw new Error("提示词包含敏感词,请修改后重试");
+ }
+
} else if (imagine_url.includes("api.ephone.ai")) {
// ePhoneAPI
let headers = {
@@ -306,6 +421,15 @@ export class MJOriginalImageGenerate {
}
res = await this.discordAPI.mjApiImagine(imagine_url, data, headers);
}
+
+ // 错误检查
+ if (res.code == 23) {
+ throw new Error("生图队列已满,请稍后尝试");
+ }
+
+ if (res.code != 1 && res.code != 22) {
+ throw new Error("未知错误,可联系管理员排查" + res.description);
+ }
// 创建成功,开始下一个
this.sendChangeMessage({
code: 1,
@@ -406,7 +530,6 @@ export class MJOriginalImageGenerate {
}
let style_ids = await this.pm.GetConfigJson(JSON.stringify(["image_style", []]), false);
- let image_styles = await ImageStyleDefine.getImageStyleStringByIds(style_ids.data);
// 替换风格的逻辑
let current_task = null;
@@ -419,7 +542,7 @@ export class MJOriginalImageGenerate {
// 拼接提示词
// 图生图的链接
// 获取风格词 + 命令后缀
- let prompt = " " + image_styles + old_prompt + (mjSetting.image_suffix ? mjSetting.image_suffix : "");
+ let prompt = old_prompt + (mjSetting.image_suffix ? mjSetting.image_suffix : "");
// 判断当前生图模式
let request_model = mjSetting.request_model
diff --git a/src/main/Original/OriginalImageGenerate.js b/src/main/Original/OriginalImageGenerate.js
index 3957f3d..a34b063 100644
--- a/src/main/Original/OriginalImageGenerate.js
+++ b/src/main/Original/OriginalImageGenerate.js
@@ -62,13 +62,12 @@ export class OriginalImageGenerate {
let seed = sd_setting.setting.seed;
let style_ids = await this.pm.GetConfigJson(JSON.stringify(["image_style", []]), false);
- let image_styles = await ImageStyleDefine.getImageStyleStringByIds(style_ids.data);
for (let i = 0; i < data.length; i++) {
const element = data[i];
let adetailer = element.adetailer;
let imageJson = JSON.parse(await fspromises.readFile(path.normalize(element.prompt_json), 'utf-8'));
- let prompt = sd_setting.webui.prompt + image_styles + ',' + element.prompt;
+ let prompt = sd_setting.webui.prompt + ',' + element.prompt;
// 添加前缀
if (prefix_prompt) {
prompt = prefix_prompt + ',' + prompt;
diff --git a/src/main/Public/Image.js b/src/main/Public/Image.js
index 29d450b..4f3ee3d 100644
--- a/src/main/Public/Image.js
+++ b/src/main/Public/Image.js
@@ -3,7 +3,7 @@ import path, { resolve } from "path";
import { Tools } from "../tools";
import fs from "fs";
import { ImageSetting } from "../../define/setting/imageSetting";
-import { isEmpty, reject } from "lodash";
+import { isEmpty } from "lodash";
import { basicApi } from "../../api/apiBasic";
import sharp from 'sharp';
import { file, image } from "../../define/Tools";
diff --git a/src/main/Public/Prompt.js b/src/main/Public/Prompt.js
new file mode 100644
index 0000000..16d09bc
--- /dev/null
+++ b/src/main/Public/Prompt.js
@@ -0,0 +1,82 @@
+import { errorMessage, successMessage } from "../generalTools";
+import { LOGGER_DEFINE } from '../../define/logger_define'
+import { Setting } from "../setting/setting";
+
+export class Prompt {
+ constructor() {
+ this.setting = new Setting(global);
+ }
+
+ /**
+ * 获取所有的排序选项
+ */
+ GetPromptSortOptions() {
+ return successMessage([
+ {
+ label: '人物',
+ value: 'character'
+ }, {
+ label: '场景',
+ value: 'scene'
+ }, {
+ label: '提示词',
+ value: 'prompt'
+ }, {
+ label: '风格',
+ value: 'style'
+ }
+ ], null, LOGGER_DEFINE.PROMPT.GET_PROMPT_SORT_OPTIONS);
+ }
+
+
+ /**
+ * 保存SD排序的选项
+ * @param {*} value
+ */
+ async SavePromptSort(value) {
+ try {
+ // 将当前数据保存
+ await this.setting.SaveDefineConfigJsonByProperty(JSON.stringify(['img_base', 'prompt_sort', value]));
+ return successMessage(null, "保存提示词排序顺序成功", LOGGER_DEFINE.PROMPT.SAVE_PROMPT_SORT_DATA);
+
+ } catch (error) {
+ return errorMessage(error.toString(), LOGGER_DEFINE.PROMPT.SAVE_PROMPT_SORT_DATA);
+ }
+ }
+
+ /**
+ * 获取当前的
+ */
+ async GetPromptSort() {
+ try {
+ let res = await this.setting.GetDefineConfigJsonByProperty(JSON.stringify(['img_base', 'prompt_sort', false, []]))
+ if (res.code == 0) {
+ throw new Error(res.message);
+ }
+ res = res.data;
+ if (res && res.length == 0) {
+ res = [
+ {
+ label: '风格',
+ value: 'style'
+ },
+ {
+ label: '人物',
+ value: 'character'
+ },
+ {
+ label: '场景',
+ value: 'scene'
+ },
+ {
+ label: '提示词',
+ value: 'prompt'
+ }
+ ]
+ }
+ return successMessage(res, "获取数据成功", LOGGER_DEFINE.PROMPT.GET_PROMPT_SORT_DATA)
+ } catch (error) {
+ return errorMessage(error.toString(), LOGGER_DEFINE.PROMPT.GET_PROMPT_SORT_DATA)
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/Public/SD.js b/src/main/Public/SD.js
index 36b8399..b2b7aff 100644
--- a/src/main/Public/SD.js
+++ b/src/main/Public/SD.js
@@ -110,7 +110,7 @@ export class SD {
return successMessage(data);
} catch (error) {
- return errorMessage("加载数据失败,错误信息如下:" +error.toString());
+ return errorMessage("加载数据失败,错误信息如下:" + error.toString());
}
}
diff --git a/src/main/backPrompt/imageGenerate.js b/src/main/backPrompt/imageGenerate.js
index fecbbff..448df49 100644
--- a/src/main/backPrompt/imageGenerate.js
+++ b/src/main/backPrompt/imageGenerate.js
@@ -13,6 +13,8 @@ const execAsync = util.promisify(exec);
const { v4: uuidv4 } = require('uuid'); // 引入UUID库来生成唯一标识符
let fspromises = require("fs").promises;
import { ImageSetting } from "../../define/setting/imageSetting";
+import { errorMessage } from "../generalTools";
+import { LOGGER_DEFINE } from "../../define/logger_define";
export class ImageGenerate {
@@ -339,7 +341,7 @@ export class ImageGenerate {
// 监听总批次完成
this.global.requestQuene.setBatchCompletionCallback(batch, (failedTasks) => {
- debugger
+
if (failedTasks.length > 0) {
let message = `
批次生成任务都已完成。
@@ -489,16 +491,10 @@ export class ImageGenerate {
}
else {
- return {
- code: 0,
- message: "参数错误"
- }
+ return errorMessage("参数错误", LOGGER_DEFINE.GLOBAL.PARAM_ERROR)
}
} catch (error) {
- return {
- code: 0,
- message: error.toString()
- }
+ return errorMessage(error.toString(), "imageGenerate_DownloadImageFile");
}
}
}
\ No newline at end of file
diff --git a/src/main/backPrompt/videoGenerate.js b/src/main/backPrompt/videoGenerate.js
index b5b9aa1..a0b7c97 100644
--- a/src/main/backPrompt/videoGenerate.js
+++ b/src/main/backPrompt/videoGenerate.js
@@ -364,8 +364,12 @@ export class VideoGenerate {
await fspromises.writeFile(project_config_path, JSON.stringify(obj));
// let task_list = JSON.parse(await fspromises.readFile(path.join(this.global.config.project_path,'scripts/task_')));
let scriptPath = path.join(define.scripts_path, 'Lai.exe');
+ let gpu = this.global.gpu.type;
+ if (video_config.libx264) {
+ gpu = "OTHER"
+ }
// 执行生成图片的脚本
- let script = `cd "${define.scripts_path}" && "${scriptPath}" -c "${project_config_path.replaceAll('\\', '/')}" "${this.global.gpu.type}"`;
+ let script = `cd "${define.scripts_path}" && "${scriptPath}" -c "${project_config_path.replaceAll('\\', '/')}" "${gpu}"`;
const output = await execAsync(script, { maxBuffer: 1024 * 1024 * 10, encoding: 'utf-8' });
if (output.stderr != '') {
obj.status = "video_error";
diff --git a/src/main/discord/discordScript.js b/src/main/discord/discordScript.js
index fdb4b6b..6c75f3f 100644
--- a/src/main/discord/discordScript.js
+++ b/src/main/discord/discordScript.js
@@ -382,7 +382,7 @@ function startObserving() {
if (window.observer) {
return;
}
- debugger
+
// 没有开始监听
MutationObserverElement();
console.log("开始监听")
diff --git a/src/main/discord/discordSimple.js b/src/main/discord/discordSimple.js
index 35ba607..feb05bf 100644
--- a/src/main/discord/discordSimple.js
+++ b/src/main/discord/discordSimple.js
@@ -507,7 +507,7 @@ export class DiscordSimple {
if (window.observer) {
return;
}
- debugger
+
// 没有开始监听
MutationObserverElement();
console.log("开始监听")
diff --git a/src/main/func.js b/src/main/func.js
index 02c1a91..4592d4d 100644
--- a/src/main/func.js
+++ b/src/main/func.js
@@ -1052,7 +1052,13 @@ async function StartStoryboarding(value) {
global.newWindow[0].win.webContents.send(DEFINE_STRING.GET_FRAME_RETUN, { code: 1, data: "正在调用进程。请勿关闭程序" })
let cc = `${path.join(define.scripts_path, 'Lai.exe')}`;
- let child = spawn(cc, ["-a", value.video_path, frame_path, input_path, value.sensitivity, global.gpu.type], { encoding: 'utf-8' });
+ // 获取生成视频设置
+ let video_config = JSON.parse(await fspromises.readFile(define.video_config, 'utf-8'));
+ let gpu = global.gpu.type;
+ if (video_config.libx264) {
+ gpu = "OTHER";
+ }
+ let child = spawn(cc, ["-a", value.video_path, frame_path, input_path, value.sensitivity, gpu], { encoding: 'utf-8' });
child.on('error', console.error)
child.stdout.on('data', (data) => {
console.log(data.toString());
diff --git a/src/main/generalTools.js b/src/main/generalTools.js
index a3df91f..e17a38e 100644
--- a/src/main/generalTools.js
+++ b/src/main/generalTools.js
@@ -72,8 +72,8 @@ function checkStringValueDeletePrefix(value, prefix) {
* @returns
*/
function successMessage(data, message = null, service = null) {
- if (service && message) {
- global.logger.info(service, `成功返回数据`);
+ if (service) {
+ global.logger.info(service, message ? message : '成功返回数据');
}
return {
code: 1,
@@ -89,8 +89,8 @@ function successMessage(data, message = null, service = null) {
* @returns
*/
function errorMessage(message, service = null) {
- if (service && message) {
- global.logger.error(service, message);
+ if (service) {
+ global.logger.error(service, message ? message : '未知报错,没有捕获的错误');
}
return {
code: 0,
diff --git a/src/main/index.js b/src/main/index.js
index a4c4492..2a421da 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -18,22 +18,9 @@ import { Setting } from './setting/setting.js'
import { has, isEmpty } from 'lodash'
// ipc
-import { SettingIpc } from './IPCEvent/settingIpc.js'
-import { ImageGenerateIpc } from './IPCEvent/imageGenerateIpc.js'
-import { WritingIpc } from './IPCEvent/writingIpc.js'
-import { VideoGenerateIpc } from './IPCEvent/videoGenerateIpc'
-import { TranslateIpc } from './IPCEvent/translateIpc.js'
-import { GptIpc } from './IPCEvent/gptIpc.js'
-import { MjIpc } from './IPCEvent/mjIpc.js'
-import { OriginalImageGenerateIpc } from './IPCEvent/originalImageGenerateIpc'
-import { SdIpc } from './IPCEvent/sdIpc.js'
import { DiscordIpc, RemoveDiscordIpc } from './IPCEvent/discordIpc.js'
-import { MainIpc } from './IPCEvent/mainIpc.js'
-import { GlobalIpc } from "./IPCEvent/globalIpc.js";
-import { ImageIpc } from "./IPCEvent/imageIpc.js";
-import { SystemIpc } from "./IPCEvent/system.js";
-import { system } from "systeminformation";
import { Logger } from "./logger.js";
+import { RegisterIpc } from "./IPCEvent/index.js";
let tools = new Tools();
let imageGenerate = new ImageGenerate(global);
@@ -226,20 +213,7 @@ app.on('window-all-closed', () => {
}
})
-
-SettingIpc();
-ImageGenerateIpc();
-WritingIpc();
-VideoGenerateIpc();
-TranslateIpc();
-GptIpc();
-SdIpc();
-MjIpc();
-MainIpc(createWindow);
-OriginalImageGenerateIpc();
-GlobalIpc();
-ImageIpc();
-SystemIpc();
+RegisterIpc(createWindow);
ipcMain.handle('dark-mode:toggle', (event, value) => {
diff --git a/src/main/setting/setting.js b/src/main/setting/setting.js
index ae8d201..2bf2a9d 100644
--- a/src/main/setting/setting.js
+++ b/src/main/setting/setting.js
@@ -317,7 +317,11 @@ export class Setting {
/**
* 获取指定的配置文件里面指定的属性的数据
- * @param {*} value
+ * @param {*} value 执行方法必要的信息
+ * 0 define中的指定属性(指定的配置文件)
+ * 1 要获取的什么属性信息 property,property 为null,赶回当前配置文件的所有数据
+ * 2 是不是要校验属性不存在
+ * 3 属性没有找到的默认值
*/
async GetDefineConfigJsonByProperty(value) {
return ImageSetting.GetDefineConfigJsonByProperty(value);
@@ -326,6 +330,11 @@ export class Setting {
/**
* 保存指定的配置文件里面指定的属性的数据
+ * @param {*} value
+ * 0 define中的指定属性(指定的配置文件)
+ * 1 要获取的什么属性信息 property,property 为null,赶回当前配置文件的所有数据
+ * 2 要写入的值
+ * 3 是不是要校验属性不存在
*/
async SaveDefineConfigJsonByProperty(value) {
return ImageSetting.SaveDefineConfigJsonByProperty(value);
diff --git a/src/preload/index.js b/src/preload/index.js
index 8c0a124..c2afc12 100644
--- a/src/preload/index.js
+++ b/src/preload/index.js
@@ -6,6 +6,8 @@ import { mj } from './mj.js';
import { sd } from './sd.js';
import { img } from './img.js';
import { system } from './system.js';
+import { setting } from './setting.js'
+import { prompt } from './prompt.js';
// Custom APIs for renderer
let events = [];
@@ -395,19 +397,23 @@ const api = {
// 打开全局通知框
showGlobalNotificationDialog: (value) => ipcRenderer.send(DEFINE_STRING.SHOW_MAIN_NOTIFICATION, value),
+ // 打开全局的消息框
+ showGlobalMessage: (value) => ipcRenderer.send(DEFINE_STRING.SHOW_GLOABAL_MESSAGE, value),
+
// 知道文件地址,获取文件base64编码
GetFileBase64: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.GET_FILE_BASE64, value)),
+ // 打开调试控制台
OpenDevTools: () => ipcRenderer.send(DEFINE_STRING.OPEN_DEV_TOOLS),
+
+ // 打开调试控制台密码
OpenDevToolsPassword: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.OPEN_DEV_TOOLS_PASSWORD, value)),
}
-// Use `contextBridge` APIs to expose Electron APIs to
-// renderer only if context isolation is enabled, otherwise
-// just add to the DOM global.
if (process.contextIsolated) {
try {
+
contextBridge.exposeInMainWorld('electron', electronAPI)
contextBridge.exposeInMainWorld('api', api)
contextBridge.exposeInMainWorld('mj', mj)
@@ -415,6 +421,8 @@ if (process.contextIsolated) {
contextBridge.exposeInMainWorld("sd", sd)
contextBridge.exposeInMainWorld("img", img)
contextBridge.exposeInMainWorld("system", system)
+ contextBridge.exposeInMainWorld("setting", setting)
+ contextBridge.exposeInMainWorld("pmpt", prompt)
contextBridge.exposeInMainWorld('darkMode', {
toggle: (value) => ipcRenderer.invoke('dark-mode:toggle', value),
})
@@ -429,5 +437,7 @@ if (process.contextIsolated) {
window.sd = sd;
window.img = img;
window.system = system;
+ window.setting = setting;
+ window.pmpt = prompt;
}
diff --git a/src/preload/mj.js b/src/preload/mj.js
index 7ecb5b8..17d625f 100644
--- a/src/preload/mj.js
+++ b/src/preload/mj.js
@@ -47,6 +47,9 @@ const mj = {
// 获取所有的MJ生图模型
GetMJImageRobotModel: async (callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.MJ.GET_MJ_IMAGE_ROBOT_MODEL)),
+
+ // 自动匹配用户
+ AutoMatchUser: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.MJ.AUTO_MATCH_USER, value)),
}
export {
diff --git a/src/preload/prompt.js b/src/preload/prompt.js
new file mode 100644
index 0000000..36770e2
--- /dev/null
+++ b/src/preload/prompt.js
@@ -0,0 +1,17 @@
+import { ipcRenderer } from "electron"
+import { DEFINE_STRING } from "../define/define_string"
+
+
+const prompt = {
+ // 获取所有的排序选项
+ GetPromptSortOptions: async (callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.PROMPT.GET_SORT_OPTIONS)),
+
+ // 保存提示词排序数据
+ SavePromptSort: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.PROMPT.SAVE_PROMPT_SORT_DATA, value)),
+
+ // 获取提示词排序数据
+ GetPromptSort: async (callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.PROMPT.GET_PROMPT_SORT_DATA))
+}
+export {
+ prompt
+}
\ No newline at end of file
diff --git a/src/preload/setting.js b/src/preload/setting.js
new file mode 100644
index 0000000..d79a08d
--- /dev/null
+++ b/src/preload/setting.js
@@ -0,0 +1,17 @@
+import { ipcRenderer } from "electron"
+import { DEFINE_STRING } from "../define/define_string"
+
+
+const setting = {
+ // 获取动态配置的的指定主分类,指定的属性的数据(只是获取动态的,type定死了dynamic)
+ GetDataByTypeAndProperty: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.SETTING.GET_DATA_BY_TYPE_AND_PROPERTY, value)),
+
+ // 保存动态配置的的指定主分类,指定的属性的数据
+ SaveDataByTypeAndProperty: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.SETTING.SAVE_DATA_BY_TYPE_AND_PROPERTY, value)),
+
+ // 删除动态配置的的指定主分类,指定的属性的数据
+ DeleteDataByTypeAndProperty: async (value, callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.SETTING.DELETE_DATA_BY_TYPE_AND_PROPERTY, value)),
+}
+export {
+ setting
+}
\ No newline at end of file
diff --git a/src/renderer/src/App.vue b/src/renderer/src/App.vue
index 8fa699b..91a7b11 100644
--- a/src/renderer/src/App.vue
+++ b/src/renderer/src/App.vue
@@ -43,7 +43,7 @@ export default defineComponent({
javascript,
hljs,
darkTheme,
- themeData,
+ themeData
}
}
})
diff --git a/src/renderer/src/components/Backstep/BatchSaveImageSetting.vue b/src/renderer/src/components/Backstep/BatchSaveImageSetting.vue
index 52eb416..cbc2858 100644
--- a/src/renderer/src/components/Backstep/BatchSaveImageSetting.vue
+++ b/src/renderer/src/components/Backstep/BatchSaveImageSetting.vue
@@ -167,7 +167,7 @@ export default defineComponent({
* 另存图片的方法
*/
async function SaveImage() {
- debugger
+
if (isEmpty(save_setting.value.save_folder)) {
message.error("请选择手动保存的文件夹")
return
diff --git a/src/renderer/src/components/Backstep/CopyWriting.vue b/src/renderer/src/components/Backstep/CopyWriting.vue
index c1b70ed..9d55ffe 100644
--- a/src/renderer/src/components/Backstep/CopyWriting.vue
+++ b/src/renderer/src/components/Backstep/CopyWriting.vue
@@ -265,7 +265,7 @@ export default defineComponent({
// 初始化加载项目下面的分镜好的文案
// 并判断是不是有洗稿后的文件。一并加载
await window.api.GetProjectWord((value) => {
- debugger
+
data.value = value.data
})
@@ -358,7 +358,7 @@ export default defineComponent({
let itemIndex = row.subValue.findIndex((item) => item.id == itemId)
let thisIndex = data.value.findIndex((item) => item.id == row.id)
if (itemIndex < 0 && isM) {
- debugger
+
message.error('数据错误')
return
} else {
diff --git a/src/renderer/src/components/Backstep/GetFrame.vue b/src/renderer/src/components/Backstep/GetFrame.vue
index 6931770..ac9feb5 100644
--- a/src/renderer/src/components/Backstep/GetFrame.vue
+++ b/src/renderer/src/components/Backstep/GetFrame.vue
@@ -175,7 +175,7 @@ export default defineComponent({
*/
async function GetVideoFile() {
await window.api.SelectFile(['mp4'], (value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
return
@@ -193,7 +193,7 @@ export default defineComponent({
message.error('选择分镜的视频地址')
return
}
- debugger
+
if (
toRaw(frameValue.value)
.video_path.split('.')
diff --git a/src/renderer/src/components/Backstep/OneKeyMatrix.vue b/src/renderer/src/components/Backstep/OneKeyMatrix.vue
index ec8172b..3bb7a60 100644
--- a/src/renderer/src/components/Backstep/OneKeyMatrix.vue
+++ b/src/renderer/src/components/Backstep/OneKeyMatrix.vue
@@ -244,14 +244,14 @@ export default defineComponent({
// 获取初始化数据(队列任务-这边不能添加)
await window.api.GetGenerateTaskList((value) => {
- debugger
+
console.log(value)
data.value = value.data.task_list
})
// 监听状态刷新事件
window.api.setEventListen([DEFINE_STRING.VIDEO_GENERATE_STATUS_REFRESH], (value) => {
- debugger
+
console.log(value)
let index = data.value.findIndex((item) => item.id == value.id)
if (index < 0) {
@@ -272,7 +272,7 @@ export default defineComponent({
async function AutoConditionCheck(e) {
e.preventDefault()
configRef.value?.validate(async (errors) => {
- debugger
+
if (errors) {
message.error('请检查必填字段')
return
@@ -301,7 +301,7 @@ export default defineComponent({
async function ActionTask(e) {
e.preventDefault()
configRef.value?.validate(async (errors) => {
- debugger
+
console.log(selectRowKeysRef.value)
if (selectRowKeysRef.value.length <= 0) {
message.error('请选择要操作的任务')
diff --git a/src/renderer/src/components/Backstep/PushBackPrompt.vue b/src/renderer/src/components/Backstep/PushBackPrompt.vue
index f595840..8490444 100644
--- a/src/renderer/src/components/Backstep/PushBackPrompt.vue
+++ b/src/renderer/src/components/Backstep/PushBackPrompt.vue
@@ -84,7 +84,7 @@ export default defineComponent({
*/
async function DeleteBadPrompt() {
await window.api.DeleteBadPrompt((value) => {
- debugger
+
console.log(value)
if (value.code == 0) {
message.error(value.message)
diff --git a/src/renderer/src/components/Backstep/ReGenerate.vue b/src/renderer/src/components/Backstep/ReGenerate.vue
index ceaa84c..4a4e0ff 100644
--- a/src/renderer/src/components/Backstep/ReGenerate.vue
+++ b/src/renderer/src/components/Backstep/ReGenerate.vue
@@ -128,7 +128,7 @@ export default defineComponent({
{
trigger: 'hover',
disabled: (() => {
- debugger
+
if (row.status == 'error') {
return false
} else {
@@ -246,7 +246,7 @@ export default defineComponent({
)
}
await window.api.GetConfigJson(JSON.stringify(['image_style', []]), async (value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
return
@@ -266,7 +266,7 @@ export default defineComponent({
// 修改一个
window.api.setEventListen([DEFINE_STRING.IMAGE_TASK_STATUS_REFRESH], (value) => {
- debugger
+
console.log(value)
// 修改当前状态
let index = task_list_data.value.findIndex((item) => item.out_folder == value.out_folder)
@@ -295,7 +295,7 @@ export default defineComponent({
}
formValue.value.image_style_list = tmp_arr
await window.api.AddImageTask(toRaw(formValue.value), (value) => {
- debugger
+
if (value.code == 0) {
message.error(value.message)
return
@@ -364,7 +364,7 @@ export default defineComponent({
* 生成全部
*/
async function GenerateAllImage() {
- debugger
+
// 生成 对应的json 文件
await window.api.AddWebuiJson(async (value) => {
console.log(value)
@@ -407,7 +407,7 @@ export default defineComponent({
maskClosable: false,
onClose: async () => {
// 重新加载数据
- debugger
+
console.log(selectStyle.value)
let tmp_arr = []
for (let i = 0; i < selectStyle.value.length; i++) {
@@ -446,7 +446,7 @@ export default defineComponent({
async function RemoveImageTask(row) {
//`${task_list.out_folder}_${images[0]}`, batch, task_list.out_folder
// 停止当前行的生图任务
- debugger
+
console.log(row)
await getInitData()
// 判断该当前状态
diff --git a/src/renderer/src/components/Backstep/oneImageReDrwa.vue b/src/renderer/src/components/Backstep/oneImageReDrwa.vue
index 7cca218..cc90b33 100644
--- a/src/renderer/src/components/Backstep/oneImageReDrwa.vue
+++ b/src/renderer/src/components/Backstep/oneImageReDrwa.vue
@@ -578,7 +578,7 @@ export default defineComponent({
// 监听状态更新事件
window.api.setEventListen([DEFINE_STRING.VIDEO_GENERATE_STATUS_REFRESH], (value) => {
- debugger;
+
console.log(value)
// 修改当前状态
let index = data.value.findIndex(item => item.folder == value.out_folder);
diff --git a/src/renderer/src/components/Clip/AddDraft.vue b/src/renderer/src/components/Clip/AddDraft.vue
index b4980f5..e9afd8f 100644
--- a/src/renderer/src/components/Clip/AddDraft.vue
+++ b/src/renderer/src/components/Clip/AddDraft.vue
@@ -26,7 +26,7 @@ export default defineComponent({
onMounted(() => {
window.api.setEventListen([DEFINE_STRING.GET_FRAME_RETUN], (value) => {
- debugger;
+
code.value = code.value + "\n" + value.data;
})
})
diff --git a/src/renderer/src/components/Clip/AlignDraft.vue b/src/renderer/src/components/Clip/AlignDraft.vue
index c484da6..cff8cc7 100644
--- a/src/renderer/src/components/Clip/AlignDraft.vue
+++ b/src/renderer/src/components/Clip/AlignDraft.vue
@@ -77,7 +77,7 @@ export default defineComponent({
message.error("请输入分镜内容");
return;
}
- debugger;
+
// 文案内容
let text_value = inputValue.value.split("\n")
// 获取当前项目下面地所有草稿
diff --git a/src/renderer/src/components/Components/DynamicTagsSelect.vue b/src/renderer/src/components/Components/DynamicTagsSelect.vue
new file mode 100644
index 0000000..0668e35
--- /dev/null
+++ b/src/renderer/src/components/Components/DynamicTagsSelect.vue
@@ -0,0 +1,158 @@
+
+