Skip to content

GordeyZuev/LEAP

Repository files navigation

🎥 LEAP

AI-powered platform for intelligent educational video content processing

Python 3.14+ FastAPI PostgreSQL Redis Celery ty License

LEAP — это multi-tenant платформа с полным REST API для автоматизации end-to-end обработки образовательного видеоконтента — от загрузки до публикации с AI-транскрибацией, интеллектуальным структурированием и профессиональным оформлением.

Версия: v0.9.6.6 (May 2026) · Статус: In Active Development • Beta Tech: Python 3.14FastAPIPydantic V2PostgreSQLRedisCeleryAI (Whisper, DeepSeek) • yt-dlpruff & ty

Структура репозитория: исходный код API — в backend/ (uv, make, тесты, Celery). В корнеdocker-compose.yml и Makefile только для Docker; веб-клиент планируется в frontend/ со своими командами (pnpm / npm).


🎯 Use Cases

🏫 Университеты и образовательные платформы

  • Автоматическая публикация тысяч лекций с минимальными усилиями
  • AI-структурирование контента для удобной навигации
  • Multi-tenant изоляция для разных факультетов/кафедр

🎓 Онлайн-школы и EdTech

  • Быстрый time-to-market для образовательного контента
  • Профессиональное оформление с таймкодами и субтитрами
  • Scheduled automation для регулярных публикаций

🎬 Контент-команды

  • Batch processing для массовой обработки архивов
  • Template-based автоматизация для разных типов контента
  • API-first подход для интеграции в существующие системы

👨‍💼 Enterprise

  • Multi-tenancy для изоляции клиентов/проектов
  • RBAC и квоты для контроля доступа
  • Audit logs и usage tracking

🔄 Как это работает

Платформа автоматизирует полный цикл обработки видео от загрузки до публикации:

📥 Видео-контент → ✂️ FFmpeg → 🤖 AI (Whisper+DeepSeek) → 📝 Метаданные → 📤 Публикация
                   Обработка    Транскрипция+Темы        Таймкоды         На платформы
                      ↓              ↓                        ↓                 ↓
                  Тишина       Структура контента      Описание+Субтитры   Multi-platform
                  удалена      с таймкодами           Template-based       Auto-retry

Этап 1: 📥 Получение контента

Источники данных:

  • Синхронизация с Zoom API через OAuth 2.0
  • yt-dlp — загрузка по ссылке с YouTube, VK, Rutube и 1000+ сайтов (видео, плейлисты, аудио)
  • Яндекс Диск — загрузка по публичной ссылке или через OAuth API
  • Загрузка локальных файлов
  • 🚧 В разработке: Google Drive

Добавление видео:

  • POST /add-url — одно видео по ссылке (yt-dlp, auto-detect платформы)
  • POST /add-playlist — плейлист/канал целиком
  • Яндекс Диск (публичная ссылка) — POST /api/v1/sources (YANDEX_DISK + public_url) и sync
  • InputSource sync — для периодической синхронизации (Zoom, Yandex Disk OAuth)

Что происходит:

  • Система забирает записи из различных источников
  • Создает записи в БД с метаданными
  • Скачивает видео в user-isolated storage
  • Поддержка multi-source для одного пользователя
  • Source-agnostic pipeline: download → process → upload работает одинаково для всех типов

Этап 2: ✂️ Обработка видео

FFmpeg Processing:

  • Детекция и удаление тишины
  • Обрезка пустого начала и конца
  • Извлечение аудиодорожки для транскрибации

Celery Chains для параллелизма:

  • Orchestrator запускает chain задач (downloadtrimtranscribetopicssubsupload)
  • Каждый шаг выполняется на свободном worker (~0.08s overhead)
  • Динамическое распределение между recordings

Результат:

  • Чистое видео без технических пауз
  • Оптимизированная длительность
  • Готовый аудио-файл

Этап 3: 🤖 AI-обработка

Транскрибация (Fireworks AI):

  • whisper-v3-turbo для точной транскрибации
  • Поддержка больших файлов (Аудио до гб)
  • Automatic chunking и retry

Извлечение структуры (DeepSeek):

  • Определение основных и детализированных тем
  • Автоматическая генерация таймкодов (HH:MM:SS)
  • Обнаружение перерывов и пауз

Субтитры:

  • Генерация SRT и VTT файлов
  • Поддержка multiple языков

Этап 4: 📝 Формирование метаданных

Автоматическая генерация:

  • Структурированное описание с таймкодами
  • Заголовок на основе шаблона
  • Подбор миниатюр (thumbnails)
  • Применение user config и templates

Template-Based:

  • Matching rules для автоматического применения
  • Пресеты для разных типов контента
  • Настройка через API или config файлы

Этап 5: 📤 Публикация

YouTube:

  • Загрузка видео через YouTube Data API v3
  • Автоматическая загрузка субтитров
  • Добавление в плейлисты
  • Настройка privacy и категории

VK:

  • Загрузка в сообщества
  • Добавление в альбомы
  • Настройка видимости

Яндекс Диск:

  • Загрузка через OAuth API
  • Template-driven folder paths (e.g. /Video/{course_name}/{date})
  • Автоматическое создание папок
  • Overwrite mode

🚧 В разработке:

  • Rutube — российская видеоплатформа
  • Local Export — полный пакет (видео + субтитры + метаданные)

Multi-Platform:

  • Параллельная загрузка на несколько платформ
  • Tracking статусов для каждой платформы
  • Template-driven настройка для каждой платформы

🚀 Чем хорош проект

Enterprise-Ready Features

⚡ Comprehensive REST API

  • Полноценный CRUD для всех сущностей
  • JWT аутентификация + RBAC
  • OpenAPI документация (Swagger, ReDoc)
  • Асинхронная архитектура на FastAPI

👥 Multi-Tenancy из коробки

  • Полная изоляция данных пользователей
  • Шифрование credentials (Fernet)
  • User-isolated file storage
  • Квоты, rate limiting и user statistics

🔐 Production Security

  • OAuth 2.0 интеграция (YouTube, VK, Zoom, Yandex Disk)
  • Automatic token refresh с декораторами
  • CSRF protection через Redis
  • Encrypted credentials в БД
  • Graceful error handling для credential/token errors

🤖 Smart Automation

  • Celery Beat scheduling
  • Declarative job configuration
  • Automatic sync + process + upload
  • Dry-run mode для preview

📊 AI-Powered Processing

  • Fireworks AI (whisper-v3-turbo) для транскрибации
  • DeepSeek для извлечения тем
  • Автоматическая генерация таймкодов
  • Генерация субтитров (SRT, VTT)

💎 Ключевые преимущества

⚡ Производительность

90%+ экономия времени

  • Полная автоматизация: от синхронизации до публикации
  • Batch processing для массовой обработки
  • Concurrent execution с оптимизацией ресурсов
  • Scheduled automation — публикация в фоне

Масштабируемость

  • Multi-tenant архитектура для тысяч пользователей
  • Horizontal scaling через Celery workers с chains
  • Async-first для высокой пропускной способности
  • DB optimization (eager loading, bulk operations)

🤖 AI-Powered Intelligence

Smart Content Processing

  • Fireworks AI (whisper-v3-turbo) — точная транскрибация
  • DeepSeek — интеллектуальное извлечение тем
  • Автоматические таймкоды для навигации
  • Генерация субтитров (SRT, VTT)

Video Enhancement

  • FFmpeg — удаление тишины и пауз
  • Automatic trimming начала/конца
  • Audio extraction для AI processing
  • Quality optimization

🏢 Enterprise-Grade

Security & Compliance

  • OAuth 2.0 + JWT authentication
  • Fernet encryption для credentials
  • RBAC для управления доступом
  • Audit logs и usage tracking

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

Modern Python Stack

Core Framework

Python 3.11+ • FastAPI (async) • SQLAlchemy 2.0 (async ORM)
PostgreSQL 12+ • Redis • Celery + Beat • Alembic

AI & ML

Fireworks AI (whisper-v3-turbo) • DeepSeek API
FFmpeg • Pydantic V2

External Integrations

Zoom API (OAuth 2.0) • YouTube Data API v3 • VK API
yt-dlp (1000+ sites) • Yandex Disk REST API
🚧 Google Drive API

Security Stack

JWT Authentication • OAuth 2.0 • Fernet Encryption
PBKDF2 Hashing • RBAC • CSRF Protection

DevOps & Tools

Docker & Docker Compose • UV (package manager)
Ruff (linter) • ty (type checker) • Flower (monitoring) • Make

Архитектурные паттерны

  • Repository Pattern — изоляция доступа к данным
  • Factory Pattern — создание сервисов с credentials
  • Service Context — централизованный контекст выполнения
  • Config-Driven — template-based автоматизация
  • Async-First — полностью асинхронная архитектура

🏗️ Enterprise Architecture

Multi-Tenancy

3-Level Data Isolation

Database:    user_id filtering + indexes
Service:     ServiceContext + ConfigHelper
File System: storage/users/user_{slug}/ isolation (ID-based naming)

Security

Authentication & Authorization

  • JWT (access + refresh) • OAuth 2.0RBAC
  • Fernet encryption • PBKDF2 hashing
  • CSRF protection via Redis

Resource Management

  • Rate limiting (60/min, 1000/hr)
  • Storage & processing quotas
  • Concurrent task limits
  • Usage tracking & audit logs

Модульная структура

api/                    ← FastAPI endpoints, JWT auth, validation
database/               ← SQLAlchemy models, Alembic migrations
file_storage/           ← Storage abstraction (paths, backends: LOCAL/S3)
video_download_module/  ← BaseDownloader + factory (Zoom, yt-dlp, Yandex Disk)
video_processing_module/← FFmpeg (silence removal, audio extraction)
transcription_module/   ← AI transcription coordination
video_upload_module/    ← Multi-platform upload (YouTube, VK, Yandex Disk)
yandex_disk_module/     ← Yandex Disk REST API client
api/services/           ← Business logic layer
api/repositories/       ← Data access layer (Repository pattern)
api/tasks/              ← Celery background tasks
storage/                ← User media files (ID-based structure)

Design Patterns:

  • Repository — data access isolation
  • Factory — service creation with credentials
  • Service Context — unified execution context
  • Config-Driven — template-based automation

📖 Детали: TECHNICAL.mdADR_OVERVIEW.md


📊 Processing Pipeline

Status Flow:

INITIALIZED → DOWNLOADING → DOWNLOADED →
PROCESSING → PROCESSED → UPLOADING → READY

Status Details:

  • PROCESSING — любая стадия обработки (transcribe, topics, subtitles) в процессе
  • PROCESSED — все стадии завершены, готово к загрузке
  • UPLOADING — загрузка на платформы (YouTube/VK/Yandex Disk) в процессе
  • READY — все загрузки завершены

Special Statuses:

  • SKIPPED — пропущено (config-driven)
  • EXPIRED — устарело (TTL exceeded)

📚 Документация

📋 Навигация: INDEX.md - полный список документов

Основные руководства

Документ Описание
📖 TECHNICAL.md Complete technical reference (API, modules, security)
🚀 DEPLOYMENT.md Production deployment guide
🗄️ DATABASE_DESIGN.md Database schema & migrations
🗺️ tests/ROADMAP.md Testing roadmap & plans
📋 PLAN.md Thesis plan & milestones
📜 CHANGELOG.md Complete version history
🎬 YT_DLP_GUIDE.md yt-dlp video ingestion guide
💿 YANDEX_DISK_GUIDE.md Yandex Disk integration guide

🆕 Последние релизы

Ниже — краткие пользовательские изменения по веткам v0.9.6.x. Полная история, даты и списки файлов — CHANGELOG.md.

Новое в v0.9.6.6:

  • Больше форматов на входе — в whitelist включены распространённые контейнеры (в т.ч. WebM / MKV и др. по релизу); один список для API, загрузки из источников и Яндекс.Диска.
  • Сильнее валидация — проверка целостности файла после скачивания: не «HTML вместо видео», согласование расширения с реальным типом контейнера (magic bytes / sniff).
  • Понятные имена на диске — сохранение как source.<расширение> по типу источника, без «всегда .mp4».

Новое в v0.9.6.5:

  • Jinja2 metadata — заголовки/описания/пути Yandex только как шаблоны Jinja2
  • Preview без сохраненияPOST .../templates/render-preview, POST .../presets/render-preview
  • Строгий конфиг перед run — привязанный шаблон должен существовать; проверка пресетов и согласованности auto-upload (404 как у «нет шаблона»)
  • Видео — устойчивее обрезка по границам звука (ведущая тишина, невалидное окно trim)

Новое в v0.9.6.4:

  • Cookies для yt-dlpYTDLP_COOKIES_FILE / YTDLP_COOKIES_FROM_BROWSER (обход блокировок YouTube и стабильный доступ)
  • Английский на всём пайплайнеlanguage: en в конфиге: ASR → темы → LLM → субтитры

Новое в v0.9.6.3:

  • Вопросы для самопроверки — DeepSeek генерирует 3–4 вопроса, переменная {questions} в шаблонах
  • Экспорт записейPOST /recordings/export (JSON, CSV, XLSX) с фильтрами
  • Ограничения платформ — автообрезка title/description до лимитов YouTube (100) и VK (128)
  • Улучшения topic extraction — Granularity enum, questions_count, usage metadata

Новое в v0.9.6:

📝 Templates & Transcription

  • transcription_vocabulary — доп. термины для распознавания (Fireworks/Whisper)
  • granularity — short/medium/long для извлечения тем (DeepSeek)
  • {summary} — переменная в шаблонах описания
  • Промпты транскрайбера в fireworks_module/prompts.py, единый русский язык
  • topics.json → extracted.json — топики и summary в одном файле

🔒 Uniqueness & Logging

  • Entity uniqueness constraints (templates, presets, automations, credentials)
  • Structured logging: loguru contextualize, SUCCESS уровень, JSON sink
  • Pipeline timing: stage_timings table, pipeline_started_at/completed_at

📥 Multi-Source Video Ingestion (v0.9.5)

  • yt-dlp — добавление видео по ссылке с YouTube, VK, Rutube и 1000+ сайтов
  • Плейлисты — импорт целых плейлистов/каналов одной командой
  • Яндекс Диск — загрузка по публичной ссылке и через OAuth API
  • Аудио (MP3) — скачивание аудио-дорожки для транскрибации
  • Direct APIPOST /add-url, /add-playlist без InputSource; Яндекс Диск — через InputSource + sync
  • Зачем: Загрузка из любых источников, data transfer между платформами

📤 Yandex Disk Upload

  • Выгрузка обработанных видео на Яндекс Диск через OAuth API
  • Template-driven folder paths (e.g. /Video/{course_name}/{date})
  • Автоматическое создание папок, кастомные имена файлов
  • Зачем: Data transfer из Zoom/YouTube на Яндекс Диск

🏗️ Source-Agnostic Architecture

  • BaseDownloader ABC — единый интерфейс для всех источников
  • create_downloader() factory — dispatch по SourceType
  • Pipeline download → process → upload работает одинаково для всех типов
  • Удалена hardcoded Zoom-логика из generic endpoints
  • Зачем: Clean architecture, легко добавлять новые источники

Ключевые возможности (ранее):

🔐 Multi-tenancy & Data Isolation

  • Полная изоляция данных между пользователями на всех уровнях
  • Зачем: Безопасность данных, соответствие GDPR

🤖 Template-driven Автоматизация

  • Celery Beat scheduling + declarative configuration
  • Автоматический цикл: sync → process → upload
  • Зачем: Экономия времени, масштабирование без увеличения команды

⚡ Параллельное Выполнение Задач

  • Celery Chains — параллелизм задач с минимальным overhead (0.08s)
  • Обрезка видео ускорена в 6x раз (audio-first подход)
  • Зачем: Быстрая обработка = довольные пользователи

☁️ S3 Storage Support

  • S3-ready storage abstraction layerLOCAL / S3 переключение одной строкой
  • ID-based naming — никакой кириллицы в путях
  • Зачем: Неограниченное хранилище, легкое масштабирование

📄 Лицензия

Business Source License 1.1

Проект распространяется под лицензией Business Source License 1.1. См. файл LICENSE для полной информации.


📞 Сотрудничетсво

Телеграм: Gordey Zuev Почта gordey.zuev@gmail.com


Status: In Active Development • Beta

About

Платформа для автоматизации end-to-end обработки видеоконтента – от загрузки до публикации на платформы с AI-транскрибацией, структурированием и оформлением.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages