1
0
Fork 0
mirror of https://github.com/EDeev/converterbot.git synced 2026-10-07 20:49:33 +03:00
converterbot/README.md
Egor Deev ce99729477 Репозиторий переименован в converterbot
Ссылки в README и метаданных пакета, имена Docker-образов (edeev/converterbot); версия
md2gost 1.0.1 — чтобы на PyPI были актуальные ссылки.
2026-10-05 23:29:05 +00:00

5.6 KiB
Raw Blame History

Converter Bot · md2gost

Русский · English

CI PyPI Python License

Конвертер Markdown в DOCX по ГОСТ 7.32-2017 и Telegram-бот для учебной рутины: присылаешь .md — получаешь отчёт, готовый к сдаче, присылаешь .zip с проектом — получаешь .txt с деревом папок и содержимым файлов. Конвертер ставится отдельно, пакетом md2gost с PyPI.

Статус: личный проект, поддерживается · бот @my_convbot · пакет md2gost

Страницы отчёта, собранного md2gost

Стек: Python 3.9+ · python-docx · aiogram 3 · Docker

md2gost — Markdown → DOCX по ГОСТ

pip install md2gost
md2gost report.md                 # рядом появится report.docx
md2gost report.md -o out.docx --no-heading-numbers

Что делает с документом:

  • поля: левое 30 мм, правое 15, верхнее и нижнее 20; Times New Roman 14 пт, интервал 1,5, абзацный отступ 1,25 см, выравнивание по ширине
  • номера страниц внизу по центру, без номера на титульном листе
  • нумерация разделов 1., 1.1., 1.1.1.; «Введение», «Заключение», «Список литературы» и другие структурные элементы — без номера, прописными, по центру
  • разрыв страницы перед каждым разделом второго уровня
  • маркированные списки с тире и вложенностью, нумерованные — 1), своя нумерация у каждого списка
  • таблицы с подписью «Таблица N» слева сверху, блоки и вставки кода моноширинным шрифтом, цитаты, сноски [^1], жирный и курсив

Параметры командной строки: --font, --size, --spacing, --no-heading-numbers, --no-page-numbers, --number-title-page. Из Python:

from md2gost import DocumentSettings, MarkdownToDocxConverter

settings = DocumentSettings()
settings.auto_numbering_headings = True
MarkdownToDocxConverter(settings).convert("report.md", "report.docx")

Разбор Markdown свой и построчный: вложенные таблицы и списки внутри таблиц не поддерживаются.

Бот

Прислать Получить
.md .docx по ГОСТ (тот же md2gost с нумерацией заголовков)
.zip с проектом .txt: дерево папок и содержимое текстовых файлов с номерами строк — удобно отдать в LLM или приложить к отчёту

Файлы — до 20 МБ. Архив проверяется до распаковки: не больше 5000 файлов и 200 МБ в распакованном виде. Служебные папки (.git, node_modules, __pycache__, build…) и бинарные файлы пропускаются. Конвертация идёт в отдельном потоке, поэтому бот не замирает на больших файлах.

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

Готовый образ: docker pull ghcr.io/edeev/converterbot или docker pull dcr.deev.su/edeev/converterbot. Без Docker: pip install -r requirements.txt, затем BOT_TOKEN=… python bot.py.

rep_to_txt.py работает и сам по себе: python rep_to_txt.py путь/к/проекту.

Структура

md2gost/converter.py   конвертер: настройки DocumentSettings и MarkdownToDocxConverter
md2gost/cli.py         командная строка md2gost
bot.py                 Telegram-бот
rep_to_txt.py          дерево проекта и содержимое файлов в один .txt
tests/                 тесты конвертера и бота

Разработка

pip install -r requirements-dev.txt
ruff check --select E9,F,B . && pytest

CI проверяет пакет на Python 3.9, 3.12 и 3.13 и собирает его. По тегу v* пакет публикуется на PyPI, а Docker-образ бота — в GitHub Packages и dcr.deev.su.

Лицензия

MIT — см. LICENSE.

Автор

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


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

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