From 3774e9fe5589a8e4158569b80207be78c435bfee Mon Sep 17 00:00:00 2001 From: lq1405 <2769838458@qq.com> Date: Sat, 8 Jun 2024 16:56:04 +0800 Subject: [PATCH] V2.2.8 --- .gitignore | 1 + package-lock.json | 2 +- package.json | 9 ++-- .../36c7fea1-5747-41c8-a624-14a29a504585.png | Bin 0 -> 44974 bytes resources/scripts/Lai.spec | 16 +++++-- resources/scripts/Lai_1.spec | 43 ++++++++++++++++++ resources/scripts/clip.py | 8 ++-- resources/scripts/iamge_to_video.py | 2 +- resources/scripts/shotSplit.py | 2 +- src/api/apiBasic.js | 42 +++++++++++++---- src/api/discordApi.js | 8 +++- src/main/Original/MJOriginalImageGenerate.js | 6 +-- src/main/Public/SD.js | 2 +- 13 files changed, 112 insertions(+), 29 deletions(-) create mode 100644 resources/image/c_s/36c7fea1-5747-41c8-a624-14a29a504585.png create mode 100644 resources/scripts/Lai_1.spec diff --git a/.gitignore b/.gitignore index c8f44e2..d3ec3dd 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ resources/scripts/lama/dist resources/scripts/lama/build resources/scripts/lama/lama_inpaint.exe resources/scripts/virtual py +resources/scripts/_internal resources/logger resources/scripts/Temp resources/image/Temp* diff --git a/package-lock.json b/package-lock.json index 83f9875..77c9a99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "laitool", - "version": "2.2.7", + "version": "2.2.8", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/package.json b/package.json index a95cbe8..9dc9a74 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "laitool", - "version": "2.2.7", + "version": "2.2.8", "description": "An Electron application with Vue", "main": "./out/main/index.js", "author": "example.com", @@ -77,11 +77,14 @@ "!resources/" ], "extraResources": [ - "resources/package/**", + "resources/package/exittool/**", + "resources/package/ffmpeg-2023-12-07-git-f89cff96d0-full_build/**", + "resources/package/Improve/**", "resources/image/style/**", "resources/image/zhanwei.png", "resources/scripts/model/**", "resources/scripts/Lai.exe", + "resources/scripts/_internal/**", "resources/scripts/lama/lama_inpaint.exe", "resources/scripts/lama/model/**", "resources/scripts/discordScript.js", @@ -92,4 +95,4 @@ "icon": "./resources/icon.ico" } } -} +} \ No newline at end of file diff --git a/resources/image/c_s/36c7fea1-5747-41c8-a624-14a29a504585.png b/resources/image/c_s/36c7fea1-5747-41c8-a624-14a29a504585.png new file mode 100644 index 0000000000000000000000000000000000000000..3aec4208242e77a829b8fcaf4fd6c7951bbe62dd GIT binary patch literal 44974 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 BntK2M literal 0 HcmV?d00001 diff --git a/resources/scripts/Lai.spec b/resources/scripts/Lai.spec index 6a9e0f2..b8e6262 100644 --- a/resources/scripts/Lai.spec +++ b/resources/scripts/Lai.spec @@ -3,10 +3,10 @@ from PyInstaller.building.datastruct import Tree from PyInstaller.utils.hooks import get_package_paths - PACKAGE_DIRECTORY = get_package_paths('faster_whisper')[1] datas = [(PACKAGE_DIRECTORY, 'faster_whisper')] + a = Analysis( ['Lai.py'], pathex=[], @@ -24,16 +24,13 @@ pyz = PYZ(a.pure) exe = EXE( pyz, a.scripts, - a.binaries, - a.datas, [], + exclude_binaries=True, name='Lai', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, - upx_exclude=[], - runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, @@ -41,3 +38,12 @@ exe = EXE( codesign_identity=None, entitlements_file=None, ) +coll = COLLECT( + exe, + a.binaries, + a.datas, + strip=False, + upx=True, + upx_exclude=[], + name='Lai', +) diff --git a/resources/scripts/Lai_1.spec b/resources/scripts/Lai_1.spec new file mode 100644 index 0000000..6a9e0f2 --- /dev/null +++ b/resources/scripts/Lai_1.spec @@ -0,0 +1,43 @@ +# -*- mode: python ; coding: utf-8 -*- + +from PyInstaller.building.datastruct import Tree +from PyInstaller.utils.hooks import get_package_paths + + +PACKAGE_DIRECTORY = get_package_paths('faster_whisper')[1] +datas = [(PACKAGE_DIRECTORY, 'faster_whisper')] + +a = Analysis( + ['Lai.py'], + pathex=[], + binaries=[], + datas=datas, + hiddenimports=[], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, +) +pyz = PYZ(a.pure) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.datas, + [], + name='Lai', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=True, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, +) diff --git a/resources/scripts/clip.py b/resources/scripts/clip.py index d4b53ca..249861c 100644 --- a/resources/scripts/clip.py +++ b/resources/scripts/clip.py @@ -245,10 +245,8 @@ class Clip: command.append("-c:v") command.append("h264_cuvid") # 使用 NVIDIA CUVID 解码器进行解码 elif self.gpu_type == "AMD": - command.append("-hwaccel") - command.append("vaapi") command.append("-c:v") - command.append("h264_vaapi") + command.append("h264") command.append("-i") command.append(random_path) command.append("-ss") @@ -266,7 +264,7 @@ class Clip: if self.gpu_type == "NVIDIA": command.append("h264_nvenc") elif self.gpu_type == "AMD": - command.append("h264_vaapi") + command.append("h264_amf") else: command.append("libx264") command.append("-preset") @@ -485,7 +483,7 @@ class Clip: if self.gpu_type == "NVIDIA": command.append("h264_nvenc") elif self.gpu_type == "AMD": - command.append("h264_vaapi") + command.append("h264_amf") else: command.append("libx264") diff --git a/resources/scripts/iamge_to_video.py b/resources/scripts/iamge_to_video.py index 80bb936..520148a 100644 --- a/resources/scripts/iamge_to_video.py +++ b/resources/scripts/iamge_to_video.py @@ -473,7 +473,7 @@ class ImageToVideo: if self.gpu_type == "NVIDIA": cmd.append("h264_nvenc") elif self.gpu_type == "AMD": - cmd.append("h264_vaapi") + cmd.append("h264_amf") else: cmd.append("libx264") diff --git a/resources/scripts/shotSplit.py b/resources/scripts/shotSplit.py index b647a06..5256d35 100644 --- a/resources/scripts/shotSplit.py +++ b/resources/scripts/shotSplit.py @@ -100,7 +100,7 @@ def ClipVideo(video_path, out_folder, image_out_folder, sensitivity, gpu_type): if gpu_type == "NVIDIA": command.append("h264_nvenc") elif gpu_type == "AMD": - command.append("h264_vaapi") + command.append("h264_amf") else: command.append("libx264") diff --git a/src/api/apiBasic.js b/src/api/apiBasic.js index 816359e..e3fc285 100644 --- a/src/api/apiBasic.js +++ b/src/api/apiBasic.js @@ -1,6 +1,10 @@ const { net } = require('electron'); +function isString(contentType) { + return contentType.startsWith('text/plain') || contentType.startsWith('application/json'); +} + let basicApi = { /** * 使用electron的net模块实现的get方法 @@ -12,9 +16,27 @@ let basicApi = { return new Promise((resolve, reject) => { const request = net.request({ url, method: 'GET', headers }); request.on('response', (response) => { - let data = ''; + let data; + if (isString(response.headers["content-type"])) { + data = ''; + } else if (response.headers["content-type"].startsWith("image/")) { + // 处理图片数据 + data = [] + } + else { + throw new Error("未知的请求返回数据类型"); + } + response.on('data', (chunk) => { - data += chunk; + if (isString(response.headers["content-type"])) { + // 处理 JSON 数据 + data += chunk; + } else if (response.headers['content-type'].startsWith('image/')) { + // 处理图片数据 + data.push(chunk); + } else { + throw new Error("未知的请求返回数据类型"); + } }); response.on('end', () => { // 结束的时候检查请求的状态码,是不是成功的请求,不是返回错误,有些其他的状态码也是成功的请求,并且返回错误提示 @@ -24,10 +46,13 @@ let basicApi = { } let parsedData; - if (response.headers['content-type'].includes('application/json')) { + if (isString(response.headers["content-type"])) { parsedData = JSON.parse(data); + } else if (response.headers['content-type'].startsWith('image/')) { + // parsedData = responseData; + parsedData = Buffer.concat(data); } else { - parsedData = data; + throw new Error("未知的请求返回数据类型"); } resolve({ @@ -71,8 +96,7 @@ let basicApi = { request.on('response', (response) => { let responseData; - if (response.headers["content-type"] === "application/json") { - + if (isString(response.headers["content-type"])) { responseData = ''; } else if (response.headers["content-type"].startsWith("image/")) { // 处理图片数据 @@ -83,12 +107,14 @@ let basicApi = { } response.on('data', (chunk) => { - if (response.headers['content-type'] === 'application/json') { + if (isString(response.headers["content-type"])) { // 处理 JSON 数据 responseData += chunk; } else if (response.headers['content-type'].startsWith('image/')) { // 处理图片数据 responseData.push(chunk); + } else { + throw new Error("未知的请求返回数据类型"); } }); @@ -99,7 +125,7 @@ let basicApi = { } let parsedData; - if (response.headers['content-type'].includes('application/json')) { + if (isString(response.headers["content-type"])) { parsedData = JSON.parse(responseData); } else if (response.headers['content-type'].startsWith('image/')) { // parsedData = responseData; diff --git a/src/api/discordApi.js b/src/api/discordApi.js index 891b86a..467517c 100644 --- a/src/api/discordApi.js +++ b/src/api/discordApi.js @@ -88,7 +88,13 @@ export class DiscordAPI { res_data = JSON.parse(res_data); } if (res_data && res_data.code != 1) { - throw new Error(res_data.message); + 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) { diff --git a/src/main/Original/MJOriginalImageGenerate.js b/src/main/Original/MJOriginalImageGenerate.js index 52a0115..bbeb19e 100644 --- a/src/main/Original/MJOriginalImageGenerate.js +++ b/src/main/Original/MJOriginalImageGenerate.js @@ -277,14 +277,14 @@ export class MJOriginalImageGenerate { let imagine_url = apiUrl.mj_url.imagine; let once_get_task = apiUrl.mj_url.once_get_task; let task_count = mjSetting.task_count ? mjSetting.task_count : 3; - let request_model = mjSetting.request_model ? mjSetting.request_model : "relaxed"; + let mj_speed = mjSetting.mj_speed ? mjSetting.mj_speed : "relaxed"; let res; // 判断当前的API是哪个 if (imagine_url.includes("mjapi.deepwl.net")) { // DrawAPI(MJ) let data = { prompt: prompt, - mode: request_model == "fast" ? "FAST" : "RELAX", + mode: mj_speed == "fast" ? "FAST" : "RELAX", } let headers = { "Authorization": mjSetting.api_key @@ -300,7 +300,7 @@ export class MJOriginalImageGenerate { botType: "MID_JOURNEY", accountFilter: { modes: [ - request_model == "fast" ? "FAST" : "RELAX" + mj_speed == "fast" ? "FAST" : "RELAX" ] } } diff --git a/src/main/Public/SD.js b/src/main/Public/SD.js index ed6414f..36b8399 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()); } }