1
0
Fork 0
mirror of https://github.com/EDeev/circlechek.git synced 2026-10-07 20:49:51 +03:00
circlechek/README.md

3.9 KiB
Raw Permalink Blame History

Circlechek

Русский · English

CI Docker License

Telegram-бот для кружочков: делает из квадратного видео видеосообщение-кружок, а из присланного кружочка — обычное видео, где углы заполнены размытым кадром или градиентом под цвет картинки.

Статус: личный проект, завершён · бот @circlechek_bot

Кружочек и два варианта фона

Стек: Python 3.12 · aiogram 3 · MoviePy 2 · Pillow · NumPy · Docker

Возможности

  • Видео → кружочек. Квадратное видео до минуты возвращается кружком.
  • Кружочек → видео. Бот разбирает кружок на кадры, заполняет углы и собирает видео обратно со звуком. Фон на выбор:
    • блюр — размытая центральная часть кадра;
    • градиент — по среднему цвету кадра.
  • Тяжёлая обработка идёт в отдельном потоке, поэтому пока один кружочек обрабатывается, бот отвечает остальным. Каждая обработка — в своей временной папке, которая убирается и при ошибке.

Note

У части кружочков Telegram бывают некорректные метаданные — тогда обработка не удастся или в видео будет брак. Бот предупреждает об этом, результат стоит проверять.

Запуск

git clone https://github.com/EDeev/circlechek.git && cd circlechek
cp .env.example .env      # BOT_TOKEN от @BotFather
docker compose up -d

Готовый образ: docker pull ghcr.io/edeev/circlechek или docker pull dcr.deev.su/edeev/circlechek.

Без Docker: Python 3.12, pip install -r requirements.txt, затем cd code && BOT_TOKEN=… python bot.py (FFmpeg ставится вместе с MoviePy).

Структура

code/bot.py         запуск
code/handlers.py    команды, приём видео и кружочков, кнопки выбора фона
code/scripts.py     Movie — кадры и звук через MoviePy; Frame — фон и маска-круг через Pillow и NumPy
data/               временные файлы обработки

Разработка

pip install ruff -r requirements.txt
ruff check --select E9,F code

CI на каждый push проверяет код и прогоняет обработку тестовых кружочков (со звуком и без, оба вида фона). Docker-образ собирается по тегу v* и публикуется в GitHub Packages и dcr.deev.su.

Лицензия

MIT — см. LICENSE.

Автор

Деев Егор Викторович — GitHub · Telegram · egor@deev.space


⭐ Если проект оказался полезным, поставьте звёздочку на GitHub!

Сделано с ❤️ — deev.space