LaiTool/src/main/setting/setting.js
2024-09-12 14:13:09 +08:00

360 lines
9.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/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()
}
}
}
/**
* 检查机器码是不是存在
* @param {*} value
* @returns
*/
async CheckMachineId(value) {
try {
// 判断机器码是不是存在
let res = await axios.post('http://api.yu-zhile.com/GetMachineStatus', {
machineId: value
})
// let res = await axios.get('http://lapi.laitool.cn/api/Machine/GetMachineStatus?machineId=' + value);
if (res.status != 200) {
throw new Error('请求错误')
}
if (res.data.code == 0) {
throw new Error(res.data.message)
}
this.global.endTime = res.data.endTime
this.global.permissions = res.data.permissions
this.global.CheckMachineId = true
// 这边初始化任务队列
if (!global.taskManager) {
global.taskManager = new TaskManager()
global.taskManager.InitListeners() // 启动监听
}
return {
code: 1
}
} catch (error) {
return {
code: 0,
message: 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
}