archive-backend/README.md
2026-11-07 18:36:19 +00:00

107 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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/ - для аудио принцип тот же