mirror of
https://github.com/EDeev/circlechek.git
synced 2026-10-07 20:49:51 +03:00
Telegram-бот: квадратное видео → кружочек и кружочек → видео с размытым или градиентным фоном в углах. aiogram 3, MoviePy, Pillow
https://t.me/circlechek_bot
- папка обработки была одна на чат: после первой же ошибки она оставалась, и все следующие кружочки в этом чате падали на os.mkdir — теперь своя временная папка на каждую обработку и уборка в любом случае; - кнопки фона знают свой кружочек: если прислать несколько подряд, обработается нужный; повторное нажатие отвечает подсказкой вместо ошибки; - покадровая обработка шла прямо в обработчике и блокировала бота для всех — вынесена в отдельный поток; - кружочек без звука падал на .audio.write_audiofile; - градиент по тёмным и светлым кадрам «переворачивался» (−10 в uint8 = 246): значения ограничены 0…255; средний цвет кадра считается NumPy, а не циклом по пикселям; - декоратор bug_report вызывал sys.exit() внутри обработчика — убран, ошибки логируются, пользователь получает сообщение; - видео, которое не удалось превратить в кружок, больше не остаётся на диске; - токен — из переменной BOT_TOKEN; ссылка «АВТОР» вела на чужой теперь профиль IGlek — заменена на EDeev; - requirements.txt: moviepy>=1.0.3 не подходил к коду под moviepy 2 — версии закреплены по работающему окружению. |
||
|---|---|---|
| code | ||
| data | ||
| .gitattributes | ||
| README.md | ||
| requirements.txt | ||
🎥 Circlechek
Telegram-бот для преобразования квадратных видео в кружочки и обработки видеосообщений с настраиваемыми фонами.
📋 Описание
Circlechek — это простой и функциональный Telegram-бот, предназначенный для работы с видеоконтентом. Бот предоставляет две основные возможности:
- Преобразование видео в кружочки — превращает квадратные видео (до 1 минуты) в формат видеосообщений Telegram
- Обработка кружочков — конвертирует видеосообщения в обычные видео с настраиваемым фоном по краям
✨ Функциональность
🔄 Видео → Кружочек
- Принимает квадратные видеофайлы длительностью до 60 секунд
- Автоматически преобразует их в формат кружочков Telegram
- Сохраняет качество и плавность воспроизведения
🎨 Кружочек → Видео
- Обрабатывает видеосообщения с добавлением фона по краям
- Градиентный фон — создает плавный цветовой переход на основе доминирующих цветов кадра
- Размытый фон — использует размытую версию центральной части видео
- Сохраняет исходное аудио и синхронизацию
🛠 Технологический стек
- Python 3.x — основной язык разработки
- aiogram — асинхронная библиотека для работы с Telegram Bot API
- PIL (Pillow) — обработка изображений и создание эффектов
- MoviePy — работа с видеофайлами, извлечение кадров и аудио
- NumPy — математические операции с массивами для обработки изображений
🚀 Установка и запуск
Требования
- Python 3.8+
- Токен Telegram-бота от @BotFather
Установка зависимостей
pip install -r requirements.txt
Настройка
- Получите токен бота в @BotFather
- Отредактируйте файл
code/config.py:
botToken = "ВАШ_ТОКЕН_БОТА"
Запуск
cd code
python bot.py
📁 Структура проекта
circlechek/
├── code/
│ ├── bot.py # Основной файл запуска бота
│ ├── handlers.py # Обработчики команд и сообщений
│ ├── scripts.py # Классы для работы с видео и изображениями
│ ├── config.py # Конфигурация бота
│ └── init.py # Инициализация бота и утилиты
├── data/
│ ├── circles/ # Временные файлы кружочков
│ ├── video_notes/ # Временные видеосообщения
│ └── videos/ # Обработанные видео
└── README.md
🎯 Использование
- Начало работы: Отправьте
/startботу - Создание кружочка: Отправьте квадратное видео (до 1 минуты)
- Обработка кружочка:
- Отправьте видеосообщение боту
- Выберите тип фона: "Градиент" или "Блюр"
- Получите обработанное видео
⚠️ Важные особенности
- Видео для преобразования в кружочки должны быть квадратными и не длиннее 1 минуты
- Некоторые кружочки могут иметь некорректные метаданные, что может привести к ошибкам обработки
- Рекомендуется всегда проверять качество полученного результата
- Все временные файлы автоматически удаляются после обработки
📄 Лицензия
Проект распространяется под лицензией MIT.
👨💻 Автор
Деев Егор Викторович - Backend Developer
- GitHub: @EDeev
- Email: egor@deev.space
- Telegram: @Egor_Deev
⭐ Если проект оказался полезным, поставьте звездочку на GitHub!
Создано с ❤️ от вашего дорогого - deev.space ©