Как я написал AI-генератор коротких видео (Shorts/Reels) на Python с Clean Architecture
Привет, Хабр! 👋 В этой статье я хочу поделиться опытом разработки пет-проекта, который превратился в полноценный инструмент для автоматической генерации коротких видео (Shorts, Reels, TikTok). Идея проста: на входе — тема (например, "История Римской Империи за 1 минуту"), на выходе — готовый видеоролик с озвучкой, субтитрами и сгенерированным видеорядом. Но вместо того, чтобы накидать "спагетти-код" в одном файле main.py , я решил подойти к задаче как инженер и построить систему на принципах Clean Architecture . 🎯 Зачем? Генерация видео — это сложный пайплайн: 1. Написать сценарий. 2. Придумать визуальный стиль. 3. Сгенерировать картинки (Midjourney, Flux). 4. Оживить картинки в видео (Kling, Runway, Sora). 5. Озвучить текст (TTS). 6. Собрать всё вместе с субтитрами. API меняются, модели выходят новые каждую неделю. Сегодня лучший визуал у Flux, завтра у Midjourney v7. Сегодня видео делаем в Runway, завтра в Kling. Жесткая привязка к конкретным API убила бы проект через месяц. Поэтому Clean Architecture здесь не роскошь, а необходимость. 🏗 Архитектура Проект разбит на слои, следуя классической "луковой" архитектуре: 1. Domain (Entities) : Pydantic-модели, описывающие суть ( VideoScript , Scene , Character ). Они ничего не знают о внешнем мире. 2. Interfaces : Абстрактные классы ( VideoGenerator , ScriptGenerator ). Контракты, которые должны соблюдать внешние сервисы. 3. Services (Use Cases) : Бизнес-логика. Здесь живут "Агенты": Сценарист, Арт-директор, Режиссер монтажа. 4. Infrastructure : Реализации интерфейсов (API клиентов Comet, Yandex, OpenAI и т.д.).

