/
marazmdev
/
russtube
Обзор
Документация
Войти
/
marazmdev
/
russtube
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
master
src/server.js
63 строки
2 KB
TwixoffStudio
Create: index.html, analyzer.js, server.js, package.json, soon.soon, README.md
14 июн 2026, 14:38
Верифицирован
14 июн 2026, 14:38
93e525d
Код
Авторство
О чём код?
import express from 'express'; import cors from 'cors'; import path from 'path'; import { fileURLToPath } from 'url'; import { analyzeUrl } from './analyzer.js'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const app = express(); const PORT = process.env.PORT || 3000; app.use(cors()); app.use(express.json()); app.use(express.static(path.join(__dirname, '../public'))); // Главный API эндпоинт app.post('/api/analyze', async (req, res) => { const { url } = req.body; if (!url) { return res.status(400).json({ success: false, error: 'URL не указан' }); } // Валидация — только russtube.ru if (!isRusstube(url)) { return res.status(400).json({ success: false, error: 'Поддерживаются только ссылки с russtube.ru' }); } console.log(`[${new Date().toISOString()}] Анализируем: ${url}`); try { const result = await analyzeUrl(url); res.json({ success: true, ...result }); } catch (err) { console.error('Ошибка анализа:', err.message); res.status(500).json({ success: false, error: err.message || 'Не удалось извлечь ссылку на видео' }); } }); // Проверка валидности URL app.post('/api/validate', (req, res) => { const { url } = req.body; res.json({ valid: isRusstube(url) }); }); function isRusstube(url) { try { const parsed = new URL(url); return parsed.hostname === 'russtube.ru' || parsed.hostname === 'www.russtube.ru'; } catch { return false; } } app.listen(PORT, () => { console.log(`\n🎬 Russtube Downloader запущен`); console.log(`🌐 Открывай: http://localhost:${PORT}\n`); });