تخطَّ إلى المحتوى
ARAB CODEمجتمع المطورين العرب

تحسين صور 4X

javascriptv1MITنُشر ٢٨ يوليو ٢٠٢٦· ♥ 0 · ⬇ 1 · 💬 0

تحسين صور

// plugins/تحسين_صورة.js
// ♡ Raiden Shogun - Plane of Euthymia - تحسين الصور 🖼️

import axios from 'axios'
import FormData from 'form-data'
import { generateWAMessageFromContent, prepareWAMessageMedia, proto } from '@whiskeysockets/baileys'
import { theme } from '../core/theme.js'

async function imageUpscaler(buffer, filename = 'image.jpg', multiplier = 2) {
    const pageRes = await fetch(
        'https://www.iloveimg.com/id/tingkatkan-gambar',
        {
            headers: {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
            }
        }
    )

    const html = await pageRes.text()
    const token = html.match(/"token":"([^"]+)"/)?.[1]
    const taskId = html.match(/ilovepdfConfig\.taskId\s*=\s*'([^']+)'/)?.[1]

    if (!token || !taskId) {
        throw new Error('فشل الحصول على token/taskId')
    }

    const uploadForm = new FormData()
    uploadForm.append('name', filename)
    uploadForm.append('chunk', '0')
    uploadForm.append('chunks', '1')
    uploadForm.append('task', taskId)
    uploadForm.append('preview', '1')
    uploadForm.append('pdfinfo', '0')
    uploadForm.append('pdfforms', '0')
    uploadForm.append('pdfresetforms', '0')
    uploadForm.append('v', 'web.0')
    uploadForm.append('file', buffer, {
        filename,
        contentType: 'image/jpeg'
    })

    const uploadRes = await axios.post(
        'https://api1g.iloveimg.com/v1/upload',
        uploadForm,
        {
            headers: {
                ...uploadForm.getHeaders(),
                Authorization: `Bearer ${token}`,
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
            }
        }
    )

    const serverFilename = uploadRes.data?.server_filename
    if (!serverFilename) throw new Error('فشل الرفع')

    const processForm = new FormData()
    processForm.append('packaged_filename', 'iloveimg-upscaled')
    processForm.append('multiplier', String(multiplier))
    processForm.append('task', taskId)
    processForm.append('tool', 'upscaleimage')
    processForm.append('files[0][server_filename]', serverFilename)
    processForm.append('files[0][filename]', filename)

    const processRes = await axios.post(
        'https://api1g.iloveimg.com/v1/process',
        processForm,
        {
            headers: {
                ...processForm.getHeaders(),
                Authorization: `Bearer ${token}`,
                Origin: 'https://www.iloveimg.com',
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
            }
        }
    )

    if (processRes.data?.status !== 'TaskSuccess') {
        throw new Error('فشل المعالجة')
    }

    const downloadRes = await axios.get(
        `https://api1g.iloveimg.com/v1/download/${taskId}`,
        {
            responseType: 'arraybuffer',
            headers: {
                Authorization: `Bearer ${token}`,
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
            }
        }
    )

    return Buffer.from(downloadRes.data)
}

// ⭐ تخزين الصورة مؤقتاً لاستخدامها في التحسين 4x
const imageCache = new Map()

let handler = async (m, { usedPrefix, command, conn, text }) => {
    try {
        // ⭐ لو المستخدم ضغط على زر "تحسين 4x"
        if (text === '4x') {
            const cachedImage = imageCache.get(m.sender)
            if (!cachedImage) {
                return m.reply('⏰ *انتهت الصلاحية*\nارفع صورة جديدة وحاول مرة أخرى')
            }

            await conn.sendMessage(m.chat, { react: { text: '⏳', key: m.key } })
            await m.reply('🔄 *جاري تحسين الصورة إلى 4x HDR...*')

            const result = await imageUpscaler(cachedImage, `image_${Date.now()}.jpg`, 4)
            
            imageCache.delete(m.sender)

            await conn.sendMessage(m.chat, {
                image: result,
                caption: `🌟 *تم تحسين الصورة 4x HDR*\n⚡ ${global.watermark}`
            }, { quoted: m })

            return conn.sendMessage(m.chat, { react: { text: '✅', key: m.key } })
        }

        // ⭐ تحسين عادي 2x
        const quoted = m.quoted ? m.quoted : m
        const mime = (quoted.msg || quoted).mimetype || ''

        if (!/image/i.test(mime)) {
            return conn.sendMessage(m.chat, {
                text: theme.build([
                    { type: 'title', text: '🖼️ تـحـسـيـن الـصـور' },
                    { type: 'divider' },
                    { type: 'line', text: 'رد على صورة لتحسين جودتها' },
                    { type: 'info', label: '📌 .تحسين', value: 'تحسين 2x مع إمكانية 4x' }
                ])
            }, { quoted: m })
        }

        await conn.sendMessage(m.chat, { react: { text: '⏳', key: m.key } })
        await m.reply('🔄 *جاري تحسين الصورة 2x...*')

        const media = await quoted.download()
        const result = await imageUpscaler(media, `image_${Date.now()}.jpg`, 2)

        // ⭐ تخزين الصورة الأصلية لإمكانية تحسينها 4x
        imageCache.set(m.sender, media)
        setTimeout(() => imageCache.delete(m.sender), 300000) // تنتهي بعد 5 دقائق

        // ⭐ تحضير الصورة المحسنة
        const imgMsg = await prepareWAMessageMedia(
            { image: result },
            { upload: conn.waUploadToServer }
        )

        // ⭐ إرسال الصورة مع زر تحسين 4x
        const messageId = `HD_${Date.now()}`
        const interactiveMessage = {
            body: { text: `✨ *تم تحسين الصورة 2x*\n\nهل تريد تحسينها إلى 4x HDR؟` },
            footer: { text: global.watermark || '♡ Raiden Shogun ♡' },
            header: {
                hasMediaAttachment: true,
                imageMessage: imgMsg.imageMessage
            },
            nativeFlowMessage: {
                buttons: [{
                    name: 'quick_reply',
                    buttonParamsJson: JSON.stringify({
                        display_text: '🌟 تحسين 4x HDR',
                        id: `${usedPrefix}${command} 4x`
                    })
                }],
                messageParamsJson: "{}"
            }
        }

        const msg = generateWAMessageFromContent(m.chat, {
            viewOnceMessage: { message: { interactiveMessage } }
        }, { userJid: conn.user.jid, quoted: m })

        await conn.relayMessage(m.chat, msg.message, {
            messageId,
            additionalNodes: [
                {
                    tag: "biz",
                    attrs: {},
                    content: [
                        {
                            tag: "interactive",
                            attrs: { type: "native_flow", v: "1" },
                            content: [
                                { tag: "native_flow", attrs: { v: "9", name: "mixed" } }
                            ]
                        }
                    ]
                }
            ]
        })

        await conn.sendMessage(m.chat, { react: { text: '✅', key: m.key } })

    } catch (e) {
        console.error('[HD] Error:', e)
        await conn.sendMessage(m.chat, { react: { text: '❌', key: m.key } })
        await m.reply(theme.build([
            { type: 'title', text: '❌ فـشـل الـتـحـسـيـن' },
            { type: 'error', text: e?.message || 'حدث خطأ غير معروف' }
        ]))
    }
}

handler.help = ['تحسين', 'hd']
handler.tags = ['tools']
handler.command = /^(تحسين|hd)$/i

export default handler

التعليقات (0)

سجّل الدخول للتعليق.