# πŸ“„ My Converter Bot [![Python](https://img.shields.io/badge/Python-3.10+-blue.svg)](https://www.python.org/) [![aiogram](https://img.shields.io/badge/aiogram-3.x-00ADD8.svg)](https://docs.aiogram.dev/) [![License](https://img.shields.io/badge/license-MIT-green.svg)](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](https://t.me/botfather)) ### ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° установки ```bash # ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория 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:** ```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 ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… запросов ## πŸ› οΈ Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ### ΠšΠ°ΡΡ‚ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π“ΠžΠ‘Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ```python 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: [@EDeev](https://github.com/EDeev) - Email: egor@deev.space - Telegram: [@Egor_Deev](https://t.me/Egor_Deev) ---
⭐ Если ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ оказался ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΡƒ Π½Π° GitHub!

Π‘ΠΎΠ·Π΄Π°Π½ΠΎ с ❀️ ΠΎΡ‚ вашСго Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ³ΠΎ - deev.space Β©