jze9 bf854f2d6e Разделы, фильтры и просмотр текстов в UI; опция «не хранить видео»
- таблица sections (дерево через parent_id), у видео section_id
- API: CRUD /sections, фильтры /videos (поиск, раздел с потомками, метод),
  GET /videos/{id}/text, PATCH раздела, DELETE вместе с файлами
- pipeline: keep_video=false удаляет mp4 после расшифровки, section_id
- UI: панель разделов с вложенностью и счётчиками, поиск, фильтр по методу,
  диалоги полного текста/выжимки, привязка к разделу, удаление,
  переключатель «Сохранять видео на диске»
- compose: bind-mount ./web для правок без пересборки

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:07:55 +05:00
2026-02-19 16:43:48 +05:00
2026-02-19 16:43:48 +05:00
2026-02-18 13:38:18 +05:00

LLM-infa

Пайплайн: YouTube → скачивание видео → текст речи → LLM-выжимка → Postgres.

Скачивает видео (yt-dlp), достаёт текст из субтитров (или распознаёт речь через Vosk, если субтитров нет), сокращает текст до краткой выжимки (через любой OpenAI-совместимый LLM API или встроенный экстрактивный алгоритм) и складывает всё в базу: пути к видео, полному тексту и выжимке.

Состав

Сервис Порт Что делает
api 8000 FastAPI: пайплайн, каталог видео, проверка LLM
web 8550 Flet UI: запуск пайплайна и библиотека результатов
db 5433→5432 Postgres 15, таблица videos

Файлы складываются в data/videos/ (mp4) и data/text/ (<uuid>.txt — полный текст, <uuid>_summary.txt — выжимка); в БД хранятся пути и метаданные.

Запуск

# 1. Модель Vosk для распознавания без субтитров (однократно, ~90 МБ)
mkdir -p models && cd models
curl -LO https://alphacephei.com/vosk/models/vosk-model-small-ru-0.22.zip
unzip vosk-model-small-ru-0.22.zip && rm vosk-model-small-ru-0.22.zip && cd ..

# 2. Поднять стек
docker compose up -d --build

UI: http://localhost:8550 · API-доки: http://localhost:8000/docs

LLM для выжимки

LLM не разворачивается в контейнере — указывается любой внешний OpenAI-совместимый эндпоинт. Два способа:

  1. В .env (используется по умолчанию для всех запросов):
    LLM_BASE_URL=https://openrouter.ai/api/v1
    LLM_API_KEY=sk-...
    LLM_MODEL=anthropic/claude-haiku-4.5
    
  2. Через UI / поле llm в запросе — на каждый запрос отдельно.

Если LLM не настроена, работает встроенная экстрактивная суммаризация (выбор ключевых предложений, без нейросети).

API

# обработать видео целиком
curl -X POST localhost:8000/pipeline/process \
  -H 'Content-Type: application/json' \
  -d '{"url": "https://youtu.be/...", "summary_max_sentences": 10}'

# каталог обработанных видео
curl localhost:8000/videos/

# проверить связь с LLM
curl -X POST localhost:8000/llm/test

Заметки

  • Старый код (users/subscriptions/media-convert) лежит в api_legacy/ и в сборку не входит.
  • Если Docker Desktop не тянет образы (TLS timeout к registry), использовать системный демон: docker context use default.
Description
No description provided
Readme 323 KiB
Languages
Python 100%