107 lines
3.5 KiB
Markdown
107 lines
3.5 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
|
||
|
||
|
||
## использование
|
||
|
||
фронтенд можно прикрутить мой а можно написать свой
|
||
|
||
директории для поиска задаются в конфиге или дефолтно это легаси структура:
|
||
|
||
- archive-backend/media/yt/ - для каналов с видео те фул путь - archive-backend/media/yt/channel/video.mp4
|
||
|
||
- archive-backend/media/media/ - для фото внутри директорий с категрией фото
|
||
|
||
- archive-backend/media/audio/ - для аудио принцип тот же |