const ws = require('ws'); async function deepfake(buffer, prompt = 'best quality, nude') { if (!prompt || !buffer || !Buffer.isBuffer(buffer)) throw new Error('Prompt and valid image buffer are required'); const session_hash = Math.random().toString(36).substring(2); const socket = new ws('wss://deepfakemaker.io/cloth-change/queue/join'); return new Promise(async (resolve, reject) => { socket.on('message', (data) => { const d = JSON.parse(data.toString('utf8')); if (d.msg === 'send_hash') { socket.send(JSON.stringify({ session_hash })); } else if (d.msg === 'send_data') { socket.send(JSON.stringify({ data: { prompt, request_from: 4, source_image: `data:image/jpeg;base64,${buffer.toString('base64')}`, type: 1 } })); } else if (d.msg === 'process_completed') { socket.close(); resolve(`https://res.deepfakemaker.io/${d.output.result[0]}`); } }); }); } // Usage: const fs = require('fs'); const resp = await deepfake(fs.readFileSync('./image2.jpg')); console.log(resp);