обработка URL-ссылок в ВК-формате при публикации постов
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
+15
-3
@@ -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>"""
|
||||||
|
|||||||
Reference in New Issue
Block a user