обработка URL-ссылок в ВК-формате при публикации постов
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-11-15 21:49:34 +03:00
parent 146e55bfa6
commit 34fd7c25e8
+15 -3
View File
@@ -25,15 +25,27 @@ def replace_vk_links(text):
Заменяет ссылки на сообщества ВК в форматах: Заменяет ссылки на сообщества ВК в форматах:
[club123|Название сообщества] -> Название сообщества [club123|Название сообщества] -> Название сообщества
[id456|Имя пользователя] -> Имя пользователя [id456|Имя пользователя] -> Имя пользователя
[url|текст] -> <a href="url">текст</a> (для Telegram)
""" """
if not text: if not text:
return text return text
# Регулярное выражение для поиска ссылок формата [типID|Текст] # Сначала обрабатываем ссылки формата [url|текст] и преобразуем их в HTML-ссылки
pattern = r'\[(?:club|id)\d+\|([^\]]+)\]' def replace_url_link(match):
url = match.group(1)
link_text = match.group(2)
return f'<a href="{url}">{link_text}</a>'
# Регулярное выражение для поиска ссылок формата [url|текст]
# Исключаем случаи, когда url начинается с club или id и цифр, за которыми сразу следует | (это обрабатывается отдельно)
url_pattern = r'\[(?!club\d+\||id\d+\|)([^\|]+)\|([^\]]+)\]'
text = re.sub(url_pattern, replace_url_link, text)
# Регулярное выражение для поиска ссылок формата [типID|Текст] (ВК-специфичные)
vk_pattern = r'\[(?:club|id)\d+\|([^\]]+)\]'
# Заменяем все вхождения на текст внутри ссылки # Заменяем все вхождения на текст внутри ссылки
return re.sub(pattern, r'\1', text) return re.sub(vk_pattern, r'\1', text)
def remove_html_tags(text): def remove_html_tags(text):
"""Удаляет HTML-теги с учетом специальной обработки <p> и <a>""" """Удаляет HTML-теги с учетом специальной обработки <p> и <a>"""