const express = require('express'); const cors = require('cors'); const axios = require('axios'); const app = express(); const port = 3000; // Конфигурация API Stable Diffusion const SD_API_URL = process.env.SD_API_URL || 'http://localhost:7860'; app.use(cors()); app.use(express.json()); // Middleware для логирования запросов app.use((req, res, next) => { console.log(`${req.method} ${req.path}`); next(); }); // Прокси для txt2img app.post('/api/txt2img', async (req, res) => { try { const response = await axios.post(`${SD_API_URL}/sdapi/v1/txt2img`, req.body); res.json(response.data); } catch (error) { console.error('Ошибка при запросе к Stable Diffusion API:', error); res.status(500).json({ error: 'Ошибка при генерации изображения', details: error.message }); } }); // Прокси для получения прогресса app.get('/api/progress', async (req, res) => { try { const response = await axios.get(`${SD_API_URL}/sdapi/v1/progress`); res.json({ ...response.data, percentage: Math.round(response.data.progress * 100) }); } catch (error) { console.error('Ошибка при получении прогресса:', error); res.status(500).json({ error: 'Ошибка при получении прогресса', details: error.message }); } }); // Прокси для получения списка моделей app.get('/api/models', async (req, res) => { try { const response = await axios.get(`${SD_API_URL}/sdapi/v1/sd-models`); res.json(response.data); } catch (error) { console.error('Ошибка при получении списка моделей:', error); res.status(500).json({ error: 'Ошибка при получении списка моделей', details: error.message }); } }); // Прокси для изменения модели app.post('/api/models/switch', async (req, res) => { try { const response = await axios.post(`${SD_API_URL}/sdapi/v1/options`, { sd_model_checkpoint: req.body.model_name }); res.json({ success: true }); } catch (error) { console.error('Ошибка при переключении модели:', error); res.status(500).json({ error: 'Ошибка при переключении модели', details: error.message }); } }); // Обработка ошибок app.use((err, req, res, next) => { console.error(err.stack); res.status(500).json({ error: 'Внутренняя ошибка сервера', details: err.message }); }); app.listen(port, () => { console.log(`Сервер запущен на порту ${port}`); console.log(`Stable Diffusion API URL: ${SD_API_URL}`); });