image-removebg
#qxzg8nrjavascript · 98 baris · 16 dilihat
import FormData from 'form-data'
import axios from 'axios'
const UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'
const SERVERS = ['api1g', 'api2g', 'api3g', 'api8g', 'api9g', 'api10g', 'api11g', 'api12g', 'api13g', 'api14g', 'api15g', 'api16g', 'api17g', 'api18g', 'api19g', 'api20g', 'api21g', 'api22g', 'api24g', 'api25g']
const TASK = 'r68zl88mq72xq94j2d5p66bn2z9lrbx20njsbw2qsAvgmzr11lvfhAx9kl87pp6yqgx7c8vg7sfbqnrr42qb16v0gj8jl5s0kq1kgp26mdyjjspd8c5A2wk8b4Adbm6vf5tpwbqlqdr8A9tfn7vbqvy28ylphlxdl379psxpd8r70nzs3sk1'
let tokenCache = null
async function getToken(force = false) {
if (!force && tokenCache && Date.now() - tokenCache.ts < 600000) return tokenCache
let { data } = await axios.get('https://www.iloveimg.com/remove-background', { headers: { 'User-Agent': UA } })
let text = String(data)
let token = null
try {
let start = text.indexOf('ilovepdfConfig = {')
let end = text.indexOf('};', start)
token = JSON.parse(text.slice(start + 17, end + 1)).token
} catch {}
let csrf = text.match(/<meta[^>]*name=["']csrf-token["'][^>]*content=["']([^"']+)["']/i)?.[1]
if (!token || !csrf) throw new Error('Gagal scrape token')
tokenCache = { token, csrf, ts: Date.now() }
return tokenCache
}
async function removeBg(buffer) {
if (buffer.length > 2097152) throw new Error('Ukuran maksimal 2MB bre, kompres dulu')
let { token, csrf } = await getToken()
for (let i = 0; i < 3; i++) {
let server = SERVERS[Math.floor(Math.random() * SERVERS.length)]
try {
let form = new FormData()
form.append('name', 'img.jpg')
form.append('chunk', '0')
form.append('chunks', '1')
form.append('task', TASK)
form.append('preview', '1')
form.append('file', buffer, 'img.jpg')
let up = await axios.post(`https://${server}.iloveimg.com/v1/upload`, form, {
headers: { Authorization: `Bearer ${token}`, Cookie: `_csrf=${csrf}`, ...form.getHeaders() }
})
let rmForm = new FormData()
rmForm.append('task', TASK)
rmForm.append('server_filename', up.data.server_filename)
let res = await axios.post(`https://${server}.iloveimg.com/v1/removebackground`, rmForm, {
headers: { Authorization: `Bearer ${token}`, Cookie: `_csrf=${csrf}`, ...rmForm.getHeaders() },
responseType: 'arraybuffer'
})
return Buffer.from(res.data)
} catch (e) {
if (e?.response?.status === 401 || e?.response?.status === 403) {
let fresh = await getToken(true)
token = fresh.token
csrf = fresh.csrf
}
}
}
throw new Error('Server down semua')
}
let handler = async (m, { conn, usedPrefix, command }) => {
let q = m.quoted ? m.quoted : m
let mime = (q.msg || q).mimetype || ''
if (!mime.includes('image')) {
return m.reply(`Balas gambar pake perintah *${usedPrefix + command}*`)
}
await m.react('⏳')
let media = await q.download()
if (!media) return m.reply('Gagal download gambar')
try {
let result = await removeBg(media)
await conn.sendMessage(m.chat, { image: result, caption: '' }, { quoted: m })
await m.react('✅')
} catch (e) {
await m.react('❌')
m.reply(e.message || 'Gagal hapus background')
}
}
handler.help = ['removebg']
handler.tags = ['image']
handler.command = /^(removebg)$/i
handler.limit = true
handler.register = true
export default handler