|
const express = require('express'); |
|
const bodyParser = require('body-parser'); |
|
const dotenv = require('dotenv'); |
|
|
|
const fetch = (await import('node-fetch')).default; |
|
|
|
|
|
|
|
|
|
dotenv.config(); |
|
|
|
const app = express(); |
|
const port = 3000; |
|
const apiKey = process.env.KEY; |
|
|
|
app.use(bodyParser.json()); |
|
|
|
|
|
app.all('/', (req, res, next) => { |
|
if (req.method !== 'POST') { |
|
res.status(405).send('Только POST'); |
|
} else { |
|
const { prompt } = req.body; |
|
|
|
if (!prompt) { |
|
return res.status(400).send('Missing "prompt" in request body'); |
|
} |
|
|
|
try { |
|
|
|
console.log('Sending request to Hugging Face API...'); |
|
|
|
const response = await fetch('https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-3-medium', { |
|
method: 'POST', |
|
headers: { |
|
'Authorization': `Bearer ${apiKey}`, |
|
'Content-Type': 'application/json' |
|
}, |
|
body: JSON.stringify({ |
|
inputs: prompt |
|
}), |
|
|
|
timeout: 60000 |
|
}); |
|
|
|
if (!response.ok) { |
|
throw new Error(`Error from Hugging Face API: ${response.statusText}`); |
|
} |
|
|
|
console.log('Received response from Hugging Face API, processing image...'); |
|
|
|
const imageBuffer = await response.buffer(); |
|
const base64Image = imageBuffer.toString('base64'); |
|
|
|
res.json({ image: base64Image }); |
|
} catch (error) { |
|
console.error('Error generating image:', error.message); |
|
res.status(500).send('Error generating image'); |
|
} |
|
} |
|
}); |
|
|
|
}); |
|
|
|
app.listen(port, () => { |
|
console.log(`Server is running on http://localhost:${port}`); |
|
}); |
|
|