image-hd
#c8jpzhvjavascript · 105 baris · 17 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 PAGE_URL = 'https://www.iloveimg.com/upscale-image'
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'
const sessionCache = new Map()
async function getToken(force = false) {
let now = Date.now()
let hit = sessionCache.get('auth')
if (!force && hit && now - hit.ts < 600000) return hit
let res = await axios.get(PAGE_URL, { headers: { 'User-Agent': UA } })
let text = String(res.data)
let token = null
let cfgIdx = text.indexOf('ilovepdfConfig')
if (cfgIdx !== -1) {
let objStart = text.indexOf('{', cfgIdx)
let objEnd = text.indexOf('};', objStart)
if (objStart !== -1 && objEnd !== -1) {
try { token = JSON.parse(text.slice(objStart, objEnd + 1))?.token } catch {}
}
}
let csrf = text.match(/<meta[^>]*name=["']csrf-token["'][^>]*content=["']([^"']+)["']/i)?.[1]
if (!token || !csrf) throw new Error('Gagal scrape token')
let data = { token, csrf, ts: now }
sessionCache.set('auth', data)
return data
}
async function upscaleImage(buffer, scale = 2) {
scale = [2, 3, 4].includes(Number(scale)) ? Number(scale) : 2
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 upForm = new FormData()
upForm.append('task', TASK)
upForm.append('server_filename', up.data.server_filename)
upForm.append('scale', scale)
let res = await axios.post(`https://${server}.iloveimg.com/v1/upscale`, upForm, {
headers: { Authorization: `Bearer ${token}`, Cookie: `_csrf=${csrf}`, ...upForm.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('Semua server gagal')
}
let handler = async (m, { conn, args, usedPrefix, command }) => {
let q = m.quoted ? m.quoted : m
let mime = (q.msg || q).mimetype || ''
if (!mime.includes('image')) {
return m.reply(`Balas gambar dengan perintah *${usedPrefix + command}*`)
}
await m.react('⏳')
let scale = args[0] || '2'
let media = await q.download()
try {
let result = await upscaleImage(media, scale)
await conn.sendMessage(m.chat, { image: result, caption: '' }, { quoted: m })
await m.react('✅')
} catch (err) {
await m.react('❌')
m.reply('Gagal memproses gambar.')
}
}
handler.help = ['hd']
handler.tags = ['image']
handler.command = /^(hd)$/i
handler.limit = true
handler.register = true
export default handler