const axios = require('axios'); const upload = require('../lib/uploadImage'); async function faceSwap(img_url1, img_url2) { try { const response1 = await axios.get(img_url1, { responseType: 'arraybuffer' }); const base64_1 = Buffer.from(response1.data).toString('base64'); const response2 = await axios.get(img_url2, { responseType: 'arraybuffer' }); const base64_2 = Buffer.from(response2.data).toString('base64'); const swapResponse = await axios.post('https://api.faceswapper.ai/swap', { target: base64_1, source: base64_2, type: 'invisible', id: 'faceswapper' }, { headers: { 'Accept': 'application/json, text/plain, */*', 'Content-Type': 'application/json', 'type': 'rapid' } }); const base64Data = swapResponse.data.result.replace(/^data:image\/\w+;base64,/, ''); const buffer = Buffer.from(base64Data, 'base64'); const imageUrl = await upload(buffer); return { success: true, elapsedTime: swapResponse.data.elapsedTime, result: swapResponse.data.result, url: imageUrl }; } catch (error) { throw error; } } const handler = async (req, res) => { try { const { img, img2, key } = req.query; if (!img) { return res.status(400).json({ success: false, error: 'Missing required parameter: img' }); } if (!img2) { return res.status(400).json({ success: false, error: 'Missing required parameter: img2' }); } if (!key) { return res.status(400).json({ success: false, error: 'Missing required parameter: key' }); } const result = await faceSwap(img, img2); return res.json({ author: "Herza", success: true, data: { elapsedTime: result.elapsedTime, result: result.result, url: result.url } }); } catch (error) { res.status(500).json({ success: false, error: error.message, timestamp: new Date().toISOString() }); } }; module.exports = { name: 'Face Swap', description: 'Swap faces between two images using AI', type: 'GET', routes: ['api/AI/faceswap'], tags: ['AI', 'tools'], parameters: ['img', 'img2', 'key'], limit: 3, enabled: true, main: ['AI', 'tools'], handler };