This commit is contained in:
手瓜一十雪 2024-05-29 14:18:43 +08:00
parent b80e550bcd
commit aa79b0e861

View File

@ -1,46 +1,46 @@
import { DeviceList } from '@/onebot11/main'; import { DeviceList } from '@/onebot11/main';
import BaseAction from '../BaseAction'; import BaseAction from '../BaseAction';
import { ActionName } from '../types'; import { ActionName } from '../types';
import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { checkFileReceived, uri2local } from '@/common/utils/file'; import { checkFileReceived, uri2local } from '@/common/utils/file';
import { NTQQSystemApi } from '@/core'; import { NTQQSystemApi } from '@/core';
import fs from 'fs'; import fs from 'fs';
const SchemaData = { const SchemaData = {
type: 'object', type: 'object',
properties: { properties: {
image: { type: 'string' }, image: { type: 'string' },
}, },
required: ['image'] required: ['image']
} as const satisfies JSONSchema; } as const satisfies JSONSchema;
type Payload = FromSchema<typeof SchemaData>; type Payload = FromSchema<typeof SchemaData>;
export class OCRImage extends BaseAction<Payload, any> { export class OCRImage extends BaseAction<Payload, any> {
actionName = ActionName.OCRImage; actionName = ActionName.OCRImage;
PayloadSchema = SchemaData; PayloadSchema = SchemaData;
protected async _handle(payload: Payload) { protected async _handle(payload: Payload) {
const { path, isLocal, errMsg } = (await uri2local(payload.image)); const { path, isLocal, errMsg } = (await uri2local(payload.image));
if (errMsg) { if (errMsg) {
throw `OCR ${payload.file}失败,image字段可能格式不正确`; throw `OCR ${payload.image}失败,image字段可能格式不正确`;
} }
if (path) { if (path) {
await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃需要提前判断 await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃需要提前判断
const ret = await NTQQSystemApi.ORCImage(path); const ret = await NTQQSystemApi.ORCImage(path);
if (!isLocal) { if (!isLocal) {
fs.unlink(path, () => { }); fs.unlink(path, () => { });
} }
if (!ret) { if (!ret) {
throw `OCR ${payload.file}失败`; throw `OCR ${payload.file}失败`;
} }
return ret.result; return ret.result;
} }
if (!isLocal) { if (!isLocal) {
fs.unlink(path, () => { }); fs.unlink(path, () => { });
} }
throw `OCR ${payload.file}失败,文件可能不存在`; throw `OCR ${payload.file}失败,文件可能不存在`;
} }
} }
export class IOCRImage extends OCRImage { export class IOCRImage extends OCRImage {
actionName = ActionName.IOCRImage; actionName = ActionName.IOCRImage;
} }