const axios = require('axios'); const FormData = require('form-data'); const { v4: uuidv4 } = require('uuid'); async function ghibliai(buffer, prompt = 'Please convert this image into Studio Ghibli art style with the Ghibli AI generator.') { try { const form = new FormData(); form.append('file', buffer, `rynn_${Date.now()}.jpg`); const { data: a } = await axios.post('https://ghibliai.ai/api/upload', form); const { data: b } = await axios.post('https://ghibliai.ai/api/transform-stream', { imageUrl: a.data.url, sessionId: uuidv4(), prompt: prompt, timestamp: Date.now().toString() }, { headers: { 'content-type': 'application/json' } }); while (true) { const { data: c } = await axios.get(`https://ghibliai.ai/api/transform-stream?taskId=${b.taskId}`, { headers: { 'content-type': 'application/json' } }); if (c.status === 'success') return c.imageUrl; if (c.status === 'error') throw new Error('No result found'); await new Promise(res => setTimeout(res, 2000)); } } catch (error) { throw new Error(error.message); } } // Usage: const fs = require('fs'); const resp = await ghibliai(fs.readFileSync('./image2.jpg')); console.log(resp);