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

3.5 KiB
Raw Blame History

RSS / Archive Backend

Бэкенд для домашнего архива медиафайлов (видео, аудио, фото). Проект представляет собой асинхронное API на FastAPI, которое собирает данные из локальных директорий, агрегирует их в PostgreSQL и отдает на фронтенд.

Технологический стек

  • Язык: Python 3.14+
  • Фреймворк: FastAPI
  • База данных: PostgreSQL 16 (Docker)
  • ORM: SQLAlchemy 2.0 (Async) + psycopg (async)
  • Валидация: Pydantic v2
  • Сервер: Uvicorn

Архитектура проекта

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

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 поднять контейнеры

sudo docker compose up -d

4 инициализация venv и установка зависимостей

python3 -m venv venv
source venv/bin/activate
pip install -r requrements.txt

5 запустить сервер

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