1
0
Fork 0
mirror of https://github.com/EDeev/converterbot.git synced 2026-10-07 20:49:33 +03:00
Markdown → DOCX по ГОСТ 7.32-2017 (пакет md2gost на PyPI) и Telegram-бот: .md → отчёт, .zip с проектом → дерево и код в .txt https://pypi.org/project/md2gost/
Find a file
Egor Deev 911b6ce233 Бот: защита от zip-бомбы, обработка в отдельном потоке, токен из окружения
- архив проверялся только по размеру (20 МБ) — распакованный мог занять гигабайты;
  теперь до распаковки проверяются число файлов (до 5000) и объём (до 200 МБ);
- конвертация шла прямо в обработчике и блокировала бота для всех;
- формат проверяется до скачивания, документ без имени больше не роняет обработчик;
- токен — из BOT_TOKEN;
- rep_to_txt: вместо изображений выводилась ссылка-заготовка raw.githubusercontent.com/...,
  которая никуда не вела; запуск из командной строки с путём вместо жёстко прописанного
  пути Windows.
2026-10-05 23:24:29 +00:00
md2gost md2gost: пакет и командная строка 2026-10-05 23:24:29 +00:00
.gitattributes Конвертер перенесён в пакет md2gost, переводы строк — LF 2026-10-05 22:54:01 +00:00
bot.py Бот: защита от zip-бомбы, обработка в отдельном потоке, токен из окружения 2026-10-05 23:24:29 +00:00
pyproject.toml md2gost: пакет и командная строка 2026-10-05 23:24:29 +00:00
README.md README 2025-10-02 17:11:19 +03:00
rep_to_txt.py Бот: защита от zip-бомбы, обработка в отдельном потоке, токен из окружения 2026-10-05 23:24:29 +00:00
requirements.txt requi 2025-10-02 17:05:35 +03:00

📄 My Converter Bot

Python aiogram License

Телеграм-бот для автоматизированной конвертации документов с поддержкой форматирования по ГОСТ 7.32-2017 и анализа структуры проектов.

🎯 Функциональные возможности

Конвертация Markdown → DOCX

  • Полная поддержка ГОСТ 7.32-2017: автоматическое форматирование научно-технической документации
  • Интеллектуальная обработка синтаксиса: заголовки, списки, таблицы, блоки кода
  • Автоматическая нумерация: иерархическая нумерация разделов (1.1.1, 1.1.2)
  • Управление сносками: интеграция footnotes с автоматическим форматированием
  • Настраиваемая типографика: Times New Roman 14pt, межстрочный интервал 1.5

Анализ архивов → TXT

  • Древовидная визуализация: полная структура проекта с UTF-8 оформлением
  • Извлечение содержимого: автоматический экспорт кода из всех текстовых файлов
  • Интеллектуальная фильтрация: игнорирование служебных директорий (node_modules, pycache)
  • Обработка бинарных файлов: детектирование и генерация placeholder для медиа

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

Компонент Технология Назначение
Bot Framework aiogram 3.x Асинхронная обработка Telegram API
Document Processing python-docx Генерация DOCX с программным управлением стилями
Parsing Engine re (regex) Парсинг Markdown синтаксиса
Archive Handling zipfile Распаковка и анализ архивов
Async Runtime asyncio Конкурентная обработка запросов

📦 Установка и развертывание

Системные требования

  • Python 3.10 или выше
  • pip package manager
  • Telegram Bot Token (получить у @BotFather)

Процедура установки

# Клонирование репозитория
git clone https://github.com/EDeev/my_converterbot.git
cd my_converterbot

# Установка зависимостей
pip install -r requirements.txt

# Конфигурация токена
# Отредактируйте bot.py, установите ваш BOT_TOKEN
# BOT_TOKEN = "your_telegram_bot_token_here"

# Запуск бота
python bot.py

🚀 Использование

Базовые команды

  • /start — инициализация и приветственное сообщение
  • /help — детальная документация по функциям

Рабочий процесс

Markdown → DOCX конвертация

  1. Отправьте .md файл боту
  2. Система автоматически применит ГОСТ форматирование
  3. Получите готовый .docx документ

Пример входного Markdown:

# Введение

Основной текст с **жирным** и *курсивным* форматированием[^1].

## 1. Методология

- Пункт списка 1
- Пункт списка 2

[^1]: Текст сноски

ZIP → TXT анализ

  1. Отправьте .zip архив с проектом
  2. Бот извлечет и проанализирует структуру
  3. Получите project_structure.txt с полным содержимым

⚙️ Архитектурные особенности

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

my_converterbot/
├── bot.py              # Основной модуль Telegram бота
├── md_to_docx.py       # Конвертер Markdown с ГОСТ движком
├── rep_to_txt.py       # Анализатор проектных структур
├── requirements.txt    # Спецификация зависимостей
└── README.md          # Текущая документация

DocumentSettings: Параметрическая конфигурация

Класс DocumentSettings обеспечивает гранулярное управление:

  • Размеры шрифтов (14pt основной текст, 16pt заголовки первого уровня)
  • Отступы документа (левый: 3.0 см для переплета)
  • Режимы нумерации (decimal: 1.1.1 или simple: 1)
  • Позиционирование номеров страниц

Интеллектуальная обработка

Алгоритм обработки списков:

  • Распознавание вложенности через отступы
  • Автоматическая замена bullet points на длинное тире (ГОСТ)
  • Сохранение иерархической структуры

Система обработки сносок:

  • Inline маркеры [^1] → верхний индекс в тексте
  • Автоматическая агрегация определений
  • Размещение в конце документа с разделителем

🔒 Ограничения и constraints

  • Максимальный размер файла: 20 МБ (Telegram API limitation)
  • Поддерживаемые форматы входных данных: .md, .zip
  • Кодировки: UTF-8, UTF-8-sig, CP1251, Latin1 (fallback цепочка)

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

  • Обработка Markdown: ~0.5-2 сек для документов до 50 страниц
  • Анализ ZIP архивов: ~1-5 сек для проектов до 1000 файлов
  • Конкурентная обработка: до 10 одновременных запросов

🛠️ Расширение функциональности

Кастомизация ГОСТ параметров

from md_to_docx import MarkdownToDocxConverter, DocumentSettings

settings = DocumentSettings()
settings.font_name = "Times New Roman"
settings.font_size = 14
settings.line_spacing = 1.5
settings.margin_left = 3.0
settings.auto_numbering_headings = True
settings.numbering_format = "decimal"

converter = MarkdownToDocxConverter(settings)
converter.convert("input.md", "output.docx")

📄 Лицензия

Этот проект является некоммерческим и распространяется под лицензией MIT.

👨‍💻 Автор

Деев Егор Викторович - Backend Developer


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

Создано с ❤️ от вашего дорогого - deev.space ©