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