UNPKG

notmebotz-tools

Version:

Sebuah Tools yang berfungsi untuk mendownload Video atau Foto dari media sosial, serta sebagai tools yang berguna untuk aplikasi kamu seperti untuk BOT

103 lines (87 loc) 3.25 kB
async function upscale(filePath) { try { const fs = require('fs'); const FormData = require('form-data'); const axios = require('axios'); if (!fs.existsSync(filePath)) { return { author: 'Herza', status: 404, error: 'File not found' }; } const headers = { 'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36', 'Referer': 'https://imgupscaler.ai/', 'Origin': 'https://imgupscaler.ai', 'Product-Serial': 'bf7942f778562c66e9930141e3fae403' }; const formData = new FormData(); const fileBuffer = fs.readFileSync(filePath); const fileName = filePath.split('/').pop(); formData.append('image', fileBuffer, { filename: fileName, contentType: 'image/jpeg' }); formData.append('upscale_type', '4x'); formData.append('scale_factor', '4'); const createJobResponse = await axios.post('https://api.imgupscaler.ai/api/imgupscaler/v1/ai-image-upscale/create-job', formData, { headers: { ...headers, ...formData.getHeaders() }, timeout: 30000 }); if (!createJobResponse.data.result || !createJobResponse.data.result.job_id) { return { author: 'Herza', status: 422, error: 'Failed to create job', response: createJobResponse.data }; } const jobId = createJobResponse.data.result.job_id; let attempts = 0; const maxAttempts = 30; while (attempts < maxAttempts) { await new Promise(resolve => setTimeout(resolve, 3000)); const statusResponse = await axios.get(`https://api.imgupscaler.ai/api/imgupscaler/v1/ai-image-upscale/get-job/${jobId}`, { headers: { 'User-Agent': headers['User-Agent'], 'Product-Serial': headers['Product-Serial'] } }); if (statusResponse.data.code === 100000 && statusResponse.data.result.output_url) { return { author: 'Herza', status: 200, data: { img_url: statusResponse.data.result.output_url[0] } }; } if (statusResponse.data.code !== 300006) { return { author: 'Herza', status: statusResponse.data.code, error: statusResponse.data.message, response: statusResponse.data }; } attempts++; } return { author: 'Herza', status: 408, error: 'Timeout waiting for completion' }; } catch (error) { return { author: 'Herza', status: 500, error: error.message, details: error.response?.data || null }; } } module.exports = upscale;