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
JavaScript
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;