LaiTool/src/api/discordApi.js

108 lines
3.1 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.

import { basicApi } from './apiBasic'
import { Tools } from '../main/tools'
import { define } from '../define/define'
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
}
if (url.includes(define.remotemj_api)) {
headers = {
'mj-api-secret': define.API
}
}
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
}
} else if (url.includes('laitool')) {
// laitool
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)
}
// 直接返回,错误信息外面判断
return res_data
} catch (error) {
throw error
}
}
}