herramientas-hd.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import FormData from "form-data"
  2. import Jimp from "jimp"
  3. const handler = async (m, {conn, usedPrefix, command}) => {
  4. try {
  5. let q = m.quoted ? m.quoted : m
  6. let mime = (q.msg || q).mimetype || q.mediaType || ""
  7. if (!mime.startsWith('image')) return m.reply(`⚠️ 𝐑𝐞𝐬𝐩𝐨𝐧𝐝𝐞 𝐚 𝐮𝐧𝐚 𝐢𝐦𝐚𝐠𝐞𝐧!`)
  8. await m.react('⌛')
  9. let img = await q.download?.()
  10. if (!img) return m.reply(`⚠️ No se pudo descargar la imagen. Por favor intenta nuevamente.`)
  11. let pr = await remini(img, "enhance")
  12. if (!pr) return m.reply(`⚠️ Hubo un problema al procesar la imagen. Intenta nuevamente más tarde.`)
  13. await conn.sendFile(m.chat, pr, 'thumbnail.jpg', "¡Imagen procesada!", m, null, fake)
  14. await m.react('✅')
  15. } catch (e) {
  16. await m.react('❌')
  17. console.error(e)
  18. m.reply(`⚠️ Ocurrió un error: ${e.message}`)
  19. }}
  20. handler.help = ["hd"]
  21. handler.tags = ["tools"]
  22. handler.command = ["remini", "hd", "enhance"]
  23. handler.register = true
  24. handler.limit = 1
  25. export default handler
  26. async function remini(imageData, operation) {
  27. return new Promise(async (resolve, reject) => {
  28. const availableOperations = ["enhance", "recolor", "dehaze"]
  29. if (!availableOperations.includes(operation)) {
  30. operation = availableOperations[0]
  31. }
  32. const baseUrl = "https://inferenceengine.vyro.ai/" + operation + ".vyro"
  33. const formData = new FormData()
  34. formData.append("image", Buffer.from(imageData), {filename: "enhance_image_body.jpg", contentType: "image/jpeg"})
  35. formData.append("model_version", 1, {"Content-Transfer-Encoding": "binary", contentType: "multipart/form-data; charset=utf-8"})
  36. formData.submit({
  37. url: baseUrl,
  38. host: "inferenceengine.vyro.ai",
  39. path: "/" + operation,
  40. protocol: "https:",
  41. headers: {
  42. "User-Agent": "okhttp/4.9.3",
  43. "Connection": "Keep-Alive",
  44. "Accept-Encoding": "gzip"
  45. }
  46. }, function (err, res) {
  47. if (err) {
  48. reject(new Error(`Error en la solicitud a la API: ${err.message}`))
  49. }
  50. const chunks = []
  51. res.on("data", function (chunk) { chunks.push(chunk) })
  52. res.on("end", function () { resolve(Buffer.concat(chunks)) })
  53. res.on("error", function (err) {
  54. reject(new Error(`Error al recibir la respuesta: ${err.message}`))
  55. })
  56. })
  57. })
  58. }