V2.2.4 版本
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
|
||||
const { net } = require('electron');
|
||||
|
||||
let basicApi = {
|
||||
/**
|
||||
* 使用electron的net模块实现的get方法
|
||||
* @param {*} url 请求的url
|
||||
* @param {*} headers 请求头
|
||||
* @returns
|
||||
*/
|
||||
get: (url, headers = {}) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const request = net.request({ url, method: 'GET', headers });
|
||||
request.on('response', (response) => {
|
||||
let data = '';
|
||||
response.on('data', (chunk) => {
|
||||
data += chunk;
|
||||
});
|
||||
response.on('end', () => {
|
||||
// 结束的时候检查请求的状态码,是不是成功的请求,不是返回错误,有些其他的状态码也是成功的请求,并且返回错误提示
|
||||
if (response.statusCode != 200) {
|
||||
reject(new Error(`请求失败,状态码:${response.statusCode},错误信息:${response.statusMessage}`));
|
||||
return;
|
||||
}
|
||||
|
||||
let parsedData;
|
||||
if (response.headers['content-type'].includes('application/json')) {
|
||||
parsedData = JSON.parse(data);
|
||||
} else {
|
||||
parsedData = data;
|
||||
}
|
||||
|
||||
resolve({
|
||||
data: parsedData,
|
||||
status: response.statusCode,
|
||||
statusText: response.statusMessage,
|
||||
headers: response.headers,
|
||||
});
|
||||
});
|
||||
response.on('error', (error) => {
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
request.on('error', (error) => {
|
||||
console.log('request error', error);
|
||||
reject(error);
|
||||
});
|
||||
request.end();
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 使用electron的net模块实现的post方法
|
||||
* @param {*} url 请求的url
|
||||
* @param {*} data 传输的数据(json格式)
|
||||
* @param {*} headers 请求头
|
||||
* @returns
|
||||
*/
|
||||
post: (url, data = {}, headers = {}) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const request = net.request({
|
||||
method: 'POST',
|
||||
url: url,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
...headers
|
||||
}
|
||||
});
|
||||
|
||||
request.write(JSON.stringify(data));
|
||||
|
||||
request.on('response', (response) => {
|
||||
let responseData = '';
|
||||
|
||||
response.on('data', (chunk) => {
|
||||
responseData += chunk;
|
||||
});
|
||||
|
||||
response.on('end', () => {
|
||||
if (response.statusCode != 200) {
|
||||
reject(new Error(`请求失败,状态码:${response.statusCode},错误信息:${response.statusMessage}`));
|
||||
return;
|
||||
}
|
||||
|
||||
let parsedData;
|
||||
if (response.headers['content-type'].includes('application/json')) {
|
||||
parsedData = JSON.parse(responseData);
|
||||
} else {
|
||||
parsedData = responseData;
|
||||
}
|
||||
|
||||
resolve({
|
||||
data: parsedData,
|
||||
status: response.statusCode,
|
||||
statusText: response.statusMessage,
|
||||
headers: response.headers
|
||||
});
|
||||
});
|
||||
|
||||
response.on('error', (error) => {
|
||||
console.log('error', error);
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
request.on('error', (error) => {
|
||||
console.log('request error', error);
|
||||
reject(error);
|
||||
});
|
||||
request.end();
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
basicApi
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
import { basicApi } from "./apiBasic";
|
||||
import { define } from "../define/define";
|
||||
import { promises as fspromises } from 'fs'
|
||||
import { errorMessage, successMessage } from "../main/generalTools";
|
||||
|
||||
|
||||
export class SdApi {
|
||||
constructor() {
|
||||
this.baseUrl = global.config?.webui_api_url;
|
||||
this.sd_setting = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前SD的服务器中所有的lora信息
|
||||
* @returns
|
||||
*/
|
||||
async getAllLoras(baseURL = null) {
|
||||
let url = this.baseUrl + "sdapi/v1/loras";
|
||||
if (baseURL != null) {
|
||||
url = baseURL + "sdapi/v1/loras";
|
||||
}
|
||||
return await basicApi.get(url);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前的所有的checkpoint模型
|
||||
* @param {*} baseURL
|
||||
*/
|
||||
async getAllSDModel(baseURL = null) {
|
||||
let url = this.baseUrl + "sdapi/v1/sd-models";
|
||||
if (baseURL != null) {
|
||||
url = baseURL + "sdapi/v1/sd-models";
|
||||
}
|
||||
return await basicApi.get(url);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前连接的所有的samplers(采样器)
|
||||
* @param {*} baseURL
|
||||
* @returns
|
||||
*/
|
||||
async getAllSamplers(baseURL = null) {
|
||||
try {
|
||||
|
||||
let url = this.baseUrl + "sdapi/v1/samplers";
|
||||
if (baseURL != null) {
|
||||
url = baseURL + "sdapi/v1/samplers";
|
||||
}
|
||||
return await basicApi.get(url);
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async txt2img(data, baseURL = null) {
|
||||
try {
|
||||
|
||||
if (this.sd_setting == null) {
|
||||
this.sd_setting = JSON.parse(await fspromises.readFile(define.sd_setting, 'utf-8'));
|
||||
this.baseUrl = this.sd_setting.setting.webui_api_url;
|
||||
}
|
||||
|
||||
// 加上通用前缀
|
||||
data.prompt = this.sd_setting.webui.prompt + data.prompt
|
||||
|
||||
data.negative_prompt = this.sd_setting.webui.negative_prompt;
|
||||
data.sampler_name = this.sd_setting.webui.sampler_name;
|
||||
data.cfg_scale = this.sd_setting.webui.cfg_scale;
|
||||
data.n_iter = 1;
|
||||
data.steps = this.sd_setting.webui.steps;
|
||||
data.save_images = false;
|
||||
data.batch_size = data.batch_size ? data.batch_size : 1;
|
||||
if (data.width == null) {
|
||||
data.width = 512;
|
||||
}
|
||||
if (data.height == null) {
|
||||
data.height = 512;
|
||||
}
|
||||
|
||||
let url = this.baseUrl + "sdapi/v1/txt2img";
|
||||
if (baseURL != null) {
|
||||
url = baseURL + "sdapi/v1/txt2img";
|
||||
}
|
||||
let res = await basicApi.post(url, data);
|
||||
return res;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user