LaiTool/src/main/setting/setting.js
lq1405 224ee47984 1. 修改用户机器码管理(所有用户需要重新注册,激活)
2. 重构软件鉴权,添加自动判断机器码,可以不在手动点击确定
3. 新增软件启动时,提示用户是不是还存在等待中的任务,还有的话,由用户判断是不是丢弃,丢弃,会将所有的等待中的任务设置为失败
4. 聚合推文 提示词合并,人物、风格和场景 添加判无,修复部分情况无法合并
5. 新增 预设(人物,场景,风格)对提示词相关的提示
6. 修复 文案处理,流式输出内容重复问题,删除豆包(请求格式不兼容)
7. 新增 文案处理 输出内容一键格式化(注意:由于GPT输出的格式化有太多的不确定,不一定可以完全格式化,需要手动检查)
8. 聚合推文原创,新增时默认设置 修脸参数,初始和SD设置中的一致
9. 修复聚合推文选图覆盖 bug
2024-10-15 19:33:37 +08:00

321 lines
8.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const fspromises = require('fs').promises
import path from 'path'
import axios from 'axios'
const { JSDOM } = require('jsdom')
import { define } from '../../define/define'
import { Tools } from '../tools'
import { ClipSetting } from '../../define/setting/clipSetting'
import { ImageSetting } from '../../define/setting/imageSetting'
import { DEFINE_STRING } from '../../define/define_string'
import { TagDefine } from '../../define/tagDefine'
import { errorMessage } from '../Public/generalTools'
import { TaskManager } from '../Service/task/taskManage'
import { SoftWareServiceBasic } from '../Service/ServiceBasic/softwareServiceBasic'
import { FLxuAPIImageType } from '../../define/enum/image'
let tagDefine = new TagDefine(global)
export class Setting {
constructor(global) {
this.global = global
this.tools = new Tools()
this.softWareServiceBasic = new SoftWareServiceBasic()
}
//#region 剪映设置
/**
* 添加背景音乐文件夹设置
* @param {*} value
*/
async AddBackgroundMusicFolder(value) {
return await ClipSetting.AddBackgroundMusicFolder(value)
}
/**
* 获取剪映背景音乐配置列表
*/
async GetBackGroundMusicConfigList() {
try {
let res = await this.tools.getJsonFilePropertyValue(
define.clip_setting,
'background_music_setting',
[]
)
return {
code: 1,
value: res
}
} catch (error) {
return {
code: 0,
error: error.toString()
}
}
}
/**
* 删除剪辑配置里面对应ID的数据
* @param {要删除的样式ID} value
*/
async deleteClipSetting(property, value) {
return ClipSetting.deleteClipSetting(property, value)
}
/**
* 获取剪映的关键帧配置
* @returns
*/
async GetKeyFrameConfigData() {
try {
let key_frame = await this.tools.getJsonFilePropertyValue(
define.clip_setting,
'key_frame',
null,
false
)
return {
code: 1,
data: key_frame
}
} catch (error) {
return {
code: 0,
message: error.toString()
}
}
}
/**
* 获取剪映关键帧配置
* @returns
*/
async GetKeyFrameOptions() {
return await ClipSetting.GetKeyFrameOptions()
}
async SaveKeyFrameSetting(value) {
return await ClipSetting.SaveKeyFrameSetting(value)
}
//#endregion
//#region 图片设置
/**
* 获取自动保存图片的存储文件的方式
* @returns
*/
async GetAutoSaveImageClassifyOptions() {
return await ImageSetting.GetAutoSaveImageClassifyOptions()
}
/**
* 保存自动保存图片的设置
* @param {*} value
* @returns
*/
async SaveImageAutoSaveSetting(value) {
return await ImageSetting.SaveImageAutoSaveSetting(value)
}
/**
* 获取自动保存图片的设置
* @param {*} value
* @returns
*/
async GetImageAutoSaveSetting(value) {
return await ImageSetting.GetImageAutoSaveSetting(value)
}
/**
* 手动另存文件夹
* @returns
*/
async SaveImageToOtherFolder(value) {
return await ImageSetting.SaveImageToOtherFolder([], value)
}
//#endregion
/**
* 移除任务
* @param {*} value
*/
async RemoveTask(value) {
if (value[0] == DEFINE_STRING.QUEUE_BATCH.IMAGE_SAVE_TO_OTHER_FOLDER) {
this.global.fileQueue.removeTask(value[0], value[1], value[2])
} else {
this.global.requestQuene.removeTask(value[0], value[1], value[2])
if (this.global.mjGenerateQuene) {
this.global.mjGenerateQuene.removeTask(value[0], value[1], value[2])
}
}
}
/**
* 加载SD配置文件
*/
async InitSDConfig() {
try {
let sd_config = JSON.parse(await fspromises.readFile(define.sd_setting, 'utf-8'))
return {
code: 1,
data: {
webui_api_url: sd_config.setting.webui_api_url,
type: sd_config.setting.type,
sampler_name: sd_config.webui.sampler_name,
prompt: sd_config.webui.prompt,
negative_prompt: sd_config.webui.negative_prompt,
denoising_strength: sd_config.webui.denoising_strength,
steps: sd_config.webui.steps,
width: sd_config.webui.width,
height: sd_config.webui.height,
adetailer: sd_config.webui.adetailer,
batch_size: sd_config.setting.batch_size,
seed: sd_config.setting.seed,
style_weight: sd_config.setting.style_weight,
cfg_scale: sd_config.webui.cfg_scale,
sd_model: sd_config.sd_model,
lora: sd_config.lora,
sampler: sd_config.sampler,
flux_model: sd_config.flux?.model ? sd_config.flux.model : FLxuAPIImageType.FLUX
}
}
} catch (error) {
return {
code: 0,
message: error
}
}
}
/**
* 获取主页显示的信息
*/
async GetShowMessage() {
try {
let res = await axios.get('https://share.weiyun.com/1EPtoGg8')
const dom = new JSDOM(res.data, {
runScripts: 'dangerously',
resources: 'usable'
})
// 创建一个函数来异步获取syncData
async function getSyncData() {
// 创建一个Promise来等待onload事件
await new Promise((resolve, reject) => {
dom.window.onload = () => {
resolve()
}
// 设置一个超时以防onload事件永远不触发
setTimeout(() => {
reject(new Error('Loading timed out'))
}, 5000) // 10秒超时
})
// 返回syncData对象
return dom.window.syncData
}
// 使用异步函数并处理结果
let re = await getSyncData()
return {
code: 1,
data: re
}
} catch (error) {
return {
code: 0,
message: error.toString()
}
}
}
/**
* 初始化配置
*/
async getSettingDafultData() {
// 加载通用配置
let data = await fspromises.readFile(define.config_path, 'utf-8')
let sd_data = await fspromises.readFile(define.sd_setting, 'utf-8')
let config_json_date = JSON.parse(data)
config_json_date.webui_api_url = JSON.parse(sd_data).setting.webui_api_url
config_json_date['space_image'] = define.zhanwei_image
return config_json_date
}
/**
* 修改配置文件中的剪映的草稿位置
* @param {剪映的草稿位置} value
* @returns
*/
async ModifySampleSetting(value) {
try {
value = JSON.parse(value)
// 当前的配置文件的内容就是global.config的内容
// 直接修改 global.config的内容即可
// 传入的value是一个对象需要遍历其中的所有属性并将属性值进行修改
for (let key in value) {
this.global.config[key] = value[key]
}
await fspromises.writeFile(define.config_path, JSON.stringify(this.global.config))
return {
code: 1,
message: '保存成功'
}
} catch (error) {
return {
cdoe: '0',
message: '保存失败,错误信息如下:' + '\n' + error.toString()
}
}
}
/**
* 获取选择角色场景模式的options
* @returns
*/
async GetRoleSceneModeOptions() {
return tagDefine.getTagSelectModel()
}
/**
* 获取生图的类别sd,mj,d3
* @returns
*/
async GetImageGenerateCategory() {
return ImageSetting.GetImageGenerateCategory()
}
//#region SD设置
//#endregion
//#region MJ设置
/**
* 获取指定的配置文件里面指定的属性的数据
* @param {*} value 执行方法必要的信息
* 0 define中的指定属性指定的配置文件
* 1 要获取的什么属性信息 propertyproperty 为null赶回当前配置文件的所有数据
* 2 是不是要校验属性不存在
* 3 属性没有找到的默认值
*/
async GetDefineConfigJsonByProperty(value) {
return ImageSetting.GetDefineConfigJsonByProperty(value)
}
/**
* 保存指定的配置文件里面指定的属性的数据
* @param {*} value
* 0 define中的指定属性指定的配置文件
* 1 要获取的什么属性信息 propertyproperty 为null赶回当前配置文件的所有数据
* 2 要写入的值
* 3 是不是要校验属性不存在
*/
async SaveDefineConfigJsonByProperty(value) {
return ImageSetting.SaveDefineConfigJsonByProperty(value)
}
//#endregion
}