API / features /image-describe.js
Puruu Puruu
8065f56
/*
* Lokasi: features/image-describe.js
* Versi: v1
*/
const axios = require('axios');
const crypto = require('crypto');
async function sendCallback(url, payload) {
try {
await axios.post(url, payload, { headers: { 'Content-Type': 'application/json' } });
} catch (error) {
console.error('Callback failed:', error.message);
}
}
module.exports = async function(req, res) {
const { imageUrl, prompt, jobId, callbackUrl, callbackKey } = req.body;
if (!imageUrl || !prompt || !jobId || !callbackUrl || !callbackKey) {
return res.status(400).json({ error: 'Missing required parameters.' });
}
res.status(202).json({ message: 'Job accepted and is being processed.' });
try {
const visitorId = crypto.randomBytes(16).toString('hex');
const headerF = crypto.createHash('md5').update(visitorId).digest('hex');
const chatPayload = {
message: prompt,
image: imageUrl,
history: [],
lang: 'en'
};
const chatResponse = await axios.post(
'https://imagedescriber.online/api/chat-with-image',
chatPayload,
{
headers: {
'Content-Type': 'application/json',
'f': headerF,
'User-Agent': 'Mozilla/5.0 (Linux; Android 10; RMX2185 Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.7151.118 Mobile Safari/537.36',
'Referer': 'https://imagedescriber.online/tools/chat-with-image-ai'
}
}
);
await sendCallback(callbackUrl, {
jobId,
callbackKey,
status: 'success',
result: { response: chatResponse.data },
});
} catch (e) {
await sendCallback(callbackUrl, {
jobId,
callbackKey,
status: 'failed',
result: { error: e.message || 'An unknown error occurred during image description.' },
});
}
};