[ВОЛК] парсинг markdown-ссылок при публикации в теолеграм
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
@@ -37,6 +37,7 @@ def replace_vk_links(text):
|
|||||||
Заменяет ссылки на сообщества ВК в форматах:
|
Заменяет ссылки на сообщества ВК в форматах:
|
||||||
[club123|Название сообщества] -> Название сообщества
|
[club123|Название сообщества] -> Название сообщества
|
||||||
[id456|Имя пользователя] -> Имя пользователя
|
[id456|Имя пользователя] -> Имя пользователя
|
||||||
|
[текст](url) -> <a href="url">текст</a> (для Telegram)
|
||||||
[url|текст] -> <a href="url">текст</a> (для Telegram)
|
[url|текст] -> <a href="url">текст</a> (для Telegram)
|
||||||
"""
|
"""
|
||||||
if not text:
|
if not text:
|
||||||
@@ -47,6 +48,27 @@ def replace_vk_links(text):
|
|||||||
vk_pattern = r'\[(?:club|id)\d+\|([^\]]+)\]'
|
vk_pattern = r'\[(?:club|id)\d+\|([^\]]+)\]'
|
||||||
text = re.sub(vk_pattern, r'\1', text)
|
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'<a href="{url}">{link_text}</a>'
|
||||||
|
|
||||||
|
# Регулярное выражение для поиска Markdown-ссылок формата [текст](url)
|
||||||
|
markdown_pattern = r'\[([^\]]+)\]\(([^\)]+)\)'
|
||||||
|
text = re.sub(markdown_pattern, replace_markdown_link, text)
|
||||||
|
|
||||||
# Затем обрабатываем ссылки формата [url|текст] и преобразуем их в HTML-ссылки
|
# Затем обрабатываем ссылки формата [url|текст] и преобразуем их в HTML-ссылки
|
||||||
def replace_url_link(match):
|
def replace_url_link(match):
|
||||||
url = match.group(1).strip()
|
url = match.group(1).strip()
|
||||||
|
|||||||
Reference in New Issue
Block a user