Асинхронный сервис загрузки и обработки Coub видео с улучшенной безопасностью и тестированием.
- ✅ Асинхронная загрузка видео с Coub.com
- ✅ Проверка дубликатов (кэширование загруженных файлов)
- ✅ Отображение прогресса загрузки в реальном времени
- ✅ Валидация URL и защита от path traversal
- ✅ Rate limiting (защита от злоупотреблений)
- ✅ Ограничение размера файлов
- ✅ Health check endpoints
- ✅ Улучшенный UI с анимациями
- ✅ Полное покрытие тестами
- FastAPI - современный асинхронный веб-фреймворк
- Celery - распределённая очередь задач
- Redis - брокер сообщений и кэш
- PostgreSQL - основная база данных
- SQLAlchemy - ORM с асинхронной поддержкой
- Pydantic v2 - валидация данных
- httpx - асинхронный HTTP клиент
- slowapi - rate limiting
- Vue.js 3 - прогрессивный JavaScript фреймворк
- Современный CSS с анимациями и transitions
- Docker & docker-compose - контейнеризация
- pytest - тестирование
- Клонируйте репозиторий
git clone <repository-url>
cd coub-download-service- Создайте .env файл
cp example.env .env
# Отредактируйте .env по необходимости- Запустите сервисы
make build
make up- Откройте в браузере
- Frontend: http://localhost:8000
- API Docs: http://localhost:8000/docs
- Health Check: http://localhost:8000/health
docker-compose build
docker-compose up -dmake test# Создайте тестовую БД
docker exec -it coub_db psql -U postgres -c "CREATE DATABASE test_filedb;"Начать обработку Coub URL
{
"url": "https://coub.com/view/VIDEO_ID"
}Проверить статус задачи
{
"task_id": "abc-123",
"status": "processing",
"progress": {
"current": 45,
"total": 100,
"status": "Загружено 2.3 MB..."
}
}Скачать готовый файл
Получить список всех файлов (с пагинацией)
Health check приложения
Health check базы данных
Health check Redis
.
├── backend/
│ ├── app/
│ │ ├── __init__.py
│ │ ├── main.py # FastAPI приложение
│ │ ├── celery_app.py # Celery конфигурация
│ │ ├── config.py # Настройки
│ │ ├── models.py # SQLAlchemy модели
│ │ ├── schemas.py # Pydantic схемы
│ │ ├── crud.py # CRUD операции
│ │ ├── tasks.py # Celery задачи
│ │ ├── database.py # Настройка БД
│ │ ├── utils.py # Вспомогательные функции
│ │ └── exceptions.py # Кастомные исключения
│ ├── tests/ # Тесты
│ │ ├── conftest.py
│ │ ├── test_api.py
│ │ ├── test_crud.py
│ │ ├── test_utils.py
│ │ └── test_tasks.py
│ ├── Dockerfile
│ └── requirements.txt
├── frontend/
│ ├── index.html
│ ├── app.js
│ └── styles.css
├── docker-compose.yml
├── Makefile
├── pytest.ini
├── example.env
└── README.md
# Логи
make logs # Все сервисы
make logs-backend # Только backend
make logs-celery # Только Celery
# Очистка
make clean # Удалить временные файлы
# Celery
make celery-status # Статус воркеров
make celery-inspect # Активные задачи- Добавьте пакет в
backend/requirements.txt - Пересоберите образы:
make build - Перезапустите:
make restart
- ✅ Валидация URL (только Coub.com)
- ✅ Санитизация имён файлов
- ✅ Защита от path traversal
- ✅ Rate limiting (10 запросов/минуту)
- ✅ Ограничение размера файлов (100 MB)
- ✅ CORS настройки
- ✅ UUID префиксы для файлов
- Измените
SECRET_KEYв.env - Настройте
ALLOWED_ORIGINSдля вашего домена - Используйте HTTPS
- Настройте firewall для БД и Redis
- Включите Sentry для мониторинга ошибок
- Регулярно обновляйте зависимости
MIT License
- FastAPI за отличный фреймворк
- Celery за надёжную очередь задач
- Vue.js за простой и мощный frontend