94 lines
2.9 KiB
Markdown
94 lines
2.9 KiB
Markdown
# RSS / Archive Backend
|
|
|
|
Бэкенд для домашнего архива медиафайлов (видео, аудио, фото).
|
|
Проект представляет собой асинхронное API на FastAPI, которое собирает данные из локальных директорий, агрегирует их в PostgreSQL и отдает на фронтенд.
|
|
|
|
## Технологический стек
|
|
|
|
- **Язык:** Python 3.14+
|
|
- **Фреймворк:** FastAPI
|
|
- **База данных:** PostgreSQL 16 (Docker)
|
|
- **ORM:** SQLAlchemy 2.0 (Async) + psycopg (async)
|
|
- **Валидация:** Pydantic v2
|
|
- **Сервер:** Uvicorn
|
|
|
|
## Архитектура проекта
|
|
|
|
```text
|
|
RSS/
|
|
├── core/ # Конфигурация и подключение к БД
|
|
│ ├── config.py # Пути к медиа, константы
|
|
│ └── db.py # Движок SQLAlchemy, Base, SessionLocal
|
|
├── models/ # SQLAlchemy-модели (таблицы)
|
|
│ ├── video_model.py
|
|
│ ├── audio_model.py
|
|
│ └── photo_model.py
|
|
├── schemas/ # Pydantic-схемы (валидация и сериализация)
|
|
│ ├── video_schemas.py
|
|
│ ├── audio_schemas.py
|
|
│ └── photo_schemas.py
|
|
├── routers/ # Эндпоинты API
|
|
│ ├── video.py
|
|
│ ├── audio.py
|
|
│ ├── photo.py
|
|
│ └── ...
|
|
├── utils/ # Скрипты синхронизации (парсеры)
|
|
│ ├── update_videos.py
|
|
│ ├── update_audio.py
|
|
│ └── update_thumbs.py
|
|
├── media/ # Медиафайлы (монтируется в контейнер/отдается статикой)
|
|
│ ├── yt/ # Видео
|
|
│ ├── audio/ # Аудио
|
|
│ ├── _thumbs/ # Превью для видео
|
|
│ ├── _covers/ # Обложки для аудио
|
|
│ └── photos/ # Фото
|
|
├── main.py # Точка входа, подключение роутеров и статики
|
|
└── requirements.txt
|
|
```
|
|
|
|
## Запуск
|
|
|
|
1 склонировать репозиторий и создать .env
|
|
|
|
```bash
|
|
git clone http://192.168.1.101:3000/ndmg/archive-backend.git
|
|
cd archive-backend
|
|
nano .env
|
|
```
|
|
|
|
2 в .env задать
|
|
|
|
```
|
|
DB_NAME
|
|
DB_PASSWORD
|
|
DB_USER
|
|
MEILI_KEY
|
|
MEILI_URL
|
|
|
|
# если надо парсинг тг:
|
|
|
|
API_ID
|
|
API_HASH
|
|
```
|
|
|
|
3 поднять контейнеры
|
|
|
|
```bash
|
|
sudo docker compose up -d
|
|
```
|
|
|
|
4 инициализация venv и установка зависимостей
|
|
```bash
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip install -r requrements.txt
|
|
```
|
|
|
|
5 запустить сервер
|
|
|
|
```bash
|
|
cd ..
|
|
uvicorn archive-backend.main:app --reload
|
|
```
|
|
|
|
6 API доступно по http://127.0.0.1:8000/docs |