2024-06-01 15:08:22 +08:00
|
|
|
|
|
|
|
|
|
|
import { basicApi } from "./apiBasic";
|
|
|
|
|
|
import { Tools } from "../main/tools";
|
2024-06-24 13:11:19 +08:00
|
|
|
|
import { define } from "../define/define";
|
2024-06-01 15:08:22 +08:00
|
|
|
|
|
|
|
|
|
|
export class DiscordAPI {
|
|
|
|
|
|
constructor() {
|
|
|
|
|
|
this.tools = new Tools();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 通过设置的ID获取MJ API的任务
|
|
|
|
|
|
* @param {*} id
|
|
|
|
|
|
*/
|
|
|
|
|
|
async GetMJAPITaskByID(id, url, key) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
let res;
|
|
|
|
|
|
url = url.replace("${id}", id);
|
|
|
|
|
|
let headers = {
|
|
|
|
|
|
"Authorization": key
|
|
|
|
|
|
}
|
2024-06-24 13:11:19 +08:00
|
|
|
|
if (url.includes(define.remotemj_api)) {
|
|
|
|
|
|
headers = {
|
|
|
|
|
|
"mj-api-secret": define.API
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-06-01 15:08:22 +08:00
|
|
|
|
res = await basicApi.get(url, headers);
|
|
|
|
|
|
|
|
|
|
|
|
let progress = res.data.progress && res.data.progress.length > 0 ? parseInt(res.data.progress.slice(0, -1)) : 0;
|
|
|
|
|
|
let status = res.data.status.toLowerCase();
|
|
|
|
|
|
// let code = (status == "success" || status == "in_progress" || status == "not_start") ? 1 : 0;
|
|
|
|
|
|
let code = (status == "failure" || status == "cancel") ? 0 : 1;
|
|
|
|
|
|
// 返回前端
|
|
|
|
|
|
let res_data = {
|
|
|
|
|
|
type: "updated",
|
|
|
|
|
|
progress: progress,
|
|
|
|
|
|
category: "api_mj",
|
|
|
|
|
|
image_click: res.data.imageUrl,
|
|
|
|
|
|
image_show: res.data.imageUrl,
|
|
|
|
|
|
message_id: res.data.id,
|
|
|
|
|
|
action: res.data.action,
|
|
|
|
|
|
status: status,
|
|
|
|
|
|
code: code,
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 判断当前的API是哪个
|
|
|
|
|
|
if (url.includes("mjapi.deepwl.net")) {
|
|
|
|
|
|
if (res_data.code == 0) {
|
|
|
|
|
|
res_data["message"] = res.data.failReason
|
|
|
|
|
|
}
|
|
|
|
|
|
} else if (url.includes("api.ephone.ai")) {
|
|
|
|
|
|
// ePhoneAPI
|
|
|
|
|
|
if (res_data.code == 0) {
|
|
|
|
|
|
res_data["message"] = res.data.failReason
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return res_data;
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|
throw error
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* MJ使用API进行生图
|
|
|
|
|
|
*/
|
|
|
|
|
|
async mjApiImagine(url, data, headers) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
// 判断是不是需要垫图,将指定的图片转换为base64
|
|
|
|
|
|
for (let i = 0; data.base64Array && i < data.base64Array.length; i++) {
|
|
|
|
|
|
const element = data.base64Array[i];
|
|
|
|
|
|
// 将指定的图片转换为base64
|
|
|
|
|
|
// 判断图片是本地图片还是网络图片
|
|
|
|
|
|
if (element.indexOf("http") == -1) {
|
|
|
|
|
|
// 本地图片
|
|
|
|
|
|
let base64 = await this.tools.readFileBase64(element);
|
|
|
|
|
|
data.base64Array[i] = `data:image/png;base64,${base64}`
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// 网络图片
|
|
|
|
|
|
// 请求对应的图片
|
|
|
|
|
|
let image_buffer = await basicApi.get(element);
|
|
|
|
|
|
// 将返回来的数据转为base64
|
|
|
|
|
|
let base64 = image_buffer.data.toString('base64');
|
|
|
|
|
|
data.base64Array[i] = `data:image/png;base64,${base64}`
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let res = await basicApi.post(url, data, headers);
|
|
|
|
|
|
console.log(res)
|
|
|
|
|
|
let res_data = res.data;
|
|
|
|
|
|
// 判断res_data 是不是json格式的字符串,是就序列化为json对象
|
|
|
|
|
|
if (typeof res_data == "string") {
|
|
|
|
|
|
res_data = JSON.parse(res_data);
|
|
|
|
|
|
}
|
2024-06-13 00:37:31 +08:00
|
|
|
|
// 直接返回,错误信息外面判断
|
2024-06-01 15:08:22 +08:00
|
|
|
|
return res_data;
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|
throw error;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|