From 470304306202b9864d5a98a1d4cab4bf24dd165f Mon Sep 17 00:00:00 2001 From: gitadmin Date: Thu, 25 Dec 2025 20:37:06 +0300 Subject: [PATCH] =?UTF-8?q?[=D0=92=D0=9E=D0=9B=D0=9A]=20=D0=BF=D0=B0=D1=80?= =?UTF-8?q?=D1=81=D0=B8=D0=BD=D0=B3=20markdown-=D1=81=D1=81=D1=8B=D0=BB?= =?UTF-8?q?=D0=BE=D0=BA=20=D0=BF=D1=80=D0=B8=20=D0=BF=D1=83=D0=B1=D0=BB?= =?UTF-8?q?=D0=B8=D0=BA=D0=B0=D1=86=D0=B8=D0=B8=20=20=D0=B2=20=D1=82=D0=B5?= =?UTF-8?q?=D0=BE=D0=BB=D0=B5=D0=B3=D1=80=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formatter.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/formatter.py b/formatter.py index d4b0ec6..6600adf 100644 --- a/formatter.py +++ b/formatter.py @@ -37,6 +37,7 @@ def replace_vk_links(text): Заменяет ссылки на сообщества ВК в форматах: [club123|Название сообщества] -> Название сообщества [id456|Имя пользователя] -> Имя пользователя + [текст](url) -> текст (для Telegram) [url|текст] -> текст (для Telegram) """ if not text: @@ -47,6 +48,27 @@ def replace_vk_links(text): vk_pattern = r'\[(?:club|id)\d+\|([^\]]+)\]' text = re.sub(vk_pattern, r'\1', text) + # Затем обрабатываем Markdown-ссылки [текст](url) и преобразуем их в HTML-ссылки + def replace_markdown_link(match): + link_text = match.group(1).strip() + url = match.group(2).strip() + + # Проверяем, что URL похож на ссылку (содержит http://, https://, или начинается с /) + # Это предотвращает обработку обычного текста в квадратных скобках как ссылки + if not (url.startswith('http://') or url.startswith('https://') or url.startswith('/') or url.startswith('#')): + # Если это не похоже на URL, возвращаем исходный текст без изменений + return match.group(0) + + # Экранируем кавычки в URL для безопасности + url = url.replace('"', '"') + # Экранируем HTML-сущности в тексте ссылки + link_text = link_text.replace('&', '&').replace('<', '<').replace('>', '>') + return f'{link_text}' + + # Регулярное выражение для поиска Markdown-ссылок формата [текст](url) + markdown_pattern = r'\[([^\]]+)\]\(([^\)]+)\)' + text = re.sub(markdown_pattern, replace_markdown_link, text) + # Затем обрабатываем ссылки формата [url|текст] и преобразуем их в HTML-ссылки def replace_url_link(match): url = match.group(1).strip()