forked from moothz/legionbot-open
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexec_removeBg.js
46 lines (38 loc) · 1.69 KB
/
exec_removeBg.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const { loggerInfo, loggerWarn } = require("./logger");
const { MessageMedia } = require('whatsapp-web.js');
const configs = require("./configs");
const path = require('node:path');
const { exec } = require('child_process');
const { nomeRandom, apagarArquivos } = require("./auxiliares");
const mime = require('mime-types');
const fsp = require('fs').promises;
function removerFundoMessageMedia(attachmentData){
loggerInfo(`[removerFundoMessageMedia] Chegou`);
return new Promise(async (resolve,reject) => {
const nRand = nomeRandom();
// Se receber vídeo, pega o thumb
const buff = Buffer.from(attachmentData.data, "base64");
const arquivoTempEntrada = path.join(configs.rootFolder,"temp",`rembg_${nRand}_in.${mime.extension(attachmentData.mimetype)}`);
const arquivoTempSaida = path.join(configs.rootFolder,"temp",`rembg_${nRand}_out.png`);
loggerInfo(`[removerFundoMessageMedia] Removendo fundo: '${arquivoTempEntrada}' -> '${arquivoTempSaida}'...`);
fsp.writeFile(arquivoTempEntrada, buff).then((res) => {
try{
exec(`${configs.apps.removebg} i ${arquivoTempEntrada} ${arquivoTempSaida}`, (error, stdout, stderr) => {
if (stderr || error || stdout.includes("erro")) {
loggerWarn(`[removerFundoMessageMedia] Erro:\n${error}\n${stderr}\n${stdout}\n----`);
reject(`[removerFundoMessageMedia] ${error}, ${stderr}`);
} else {
apagarArquivos([arquivoTempEntrada,arquivoTempSaida]);
resolve(MessageMedia.fromFilePath(arquivoTempSaida,"image/png"));
}
});
} catch (e){
throw e;
}
}).catch(e => {
loggerWarn(`[removerFundoMessageMedia] Erro tentando gravar arquivo:\n${e}`);
reject(e);
});
});
}
module.exports = { removerFundoMessageMedia }