ai-enlarger.mjs
javascript•Created 25 Jan 2026, 08:29•19 views
Upscale, Retouch, and Sharpen image.
#tools#utility#image
javascript
0 lines
/***
@ Base: https://play.google.com/store/apps/details?id=com.app.aiimglarger
@ Author: Shannz
@ Note: Upscale, Retouch, and Sharpen image.
***/
import axios from 'axios';
import FormData from 'form-data';
import fs from 'fs';
import { Buffer } from 'buffer';
const CONFIG = {
BASE_URL: "https://photoai.imglarger.com/api/PhoAi",
HEADERS: {
'User-Agent': 'Dart/3.9 (dart:io)',
'Accept-Encoding': 'gzip'
}
};
const generateRandomUser = () => `${crypto.randomBytes(8).toString('hex')}_aiimglarger`;
const prepareFile = async (input) => {
if (Buffer.isBuffer(input)) return input;
if (input.startsWith('http')) {
const res = await axios.get(input, { responseType: 'arraybuffer' });
return Buffer.from(res.data);
}
if (fs.existsSync(input)) return fs.createReadStream(input);
return null;
};
const pollStatus = async (code, type) => {
const maxAttempts = 20;
let attempts = 0;
while (attempts < maxAttempts) {
try {
const { data } = await axios.post(`${CONFIG.BASE_URL}/CheckStatus`, {
code: code,
type: parseInt(type),
username: generateRandomUser
}, {
headers: { ...CONFIG.HEADERS, 'Content-Type': 'application/json;charset=UTF-8' }
});
if (data.data?.status === 'success') {
return { success: true, url: data.data.downloadUrls[0], data: data.data };
}
if (data.data?.status === 'failed') {
return { success: false, msg: 'Processing failed on server' };
}
await new Promise(resolve => setTimeout(resolve, 3000));
attempts++;
} catch (e) {
return { success: false, msg: e.message };
}
}
return { success: false, msg: 'Timeout' };
};
export const photoAi = {
upscale: async (imageInput, scale = '4') => {
try {
const file = await prepareFile(imageInput);
const form = new FormData();
form.append('type', '0');
form.append('username', generateRandomUser);
form.append('scaleRadio', scale.toString());
form.append('file', file, { filename: 'image.jpg' });
const { data } = await axios.post(`${CONFIG.BASE_URL}/Upload`, form, {
headers: { ...CONFIG.HEADERS, ...form.getHeaders() }
});
if (data.code === 200 && data.data) {
return await pollStatus(data.data, 0);
}
return { success: false, msg: data.msg || 'Upload failed' };
} catch (error) {
return { success: false, msg: error.message };
}
},
retouch: async (imageInput) => {
try {
const file = await prepareFile(imageInput);
const form = new FormData();
form.append('type', '3');
form.append('username', generateRandomUser);
form.append('file', file, { filename: 'image.jpg' });
const { data } = await axios.post(`${CONFIG.BASE_URL}/Upload`, form, {
headers: { ...CONFIG.HEADERS, ...form.getHeaders() }
});
if (data.code === 200 && data.data) {
return await pollStatus(data.data, 3);
}
return { success: false, msg: data.msg || 'Upload failed' };
} catch (error) {
return { success: false, msg: error.message };
}
},
sharpen: async (imageInput) => {
try {
const file = await prepareFile(imageInput);
const form = new FormData();
form.append('type', '1');
form.append('username', generateRandomUser);
form.append('file', file, { filename: 'image.jpg' });
const { data } = await axios.post(`${CONFIG.BASE_URL}/Upload`, form, {
headers: { ...CONFIG.HEADERS, ...form.getHeaders() }
});
if (data.code === 200 && data.data) {
return await pollStatus(data.data, 1);
}
return { success: false, msg: data.msg || 'Upload failed' };
} catch (error) {
return { success: false, msg: error.message };
}
}
};