Исправление по переносам и ссылкам
This commit is contained in:
35
news-bot.py
35
news-bot.py
@@ -3,6 +3,7 @@
|
|||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
import urllib.parse
|
||||||
import discord
|
import discord
|
||||||
import logging
|
import logging
|
||||||
import colorlog
|
import colorlog
|
||||||
@@ -83,18 +84,22 @@ def html_to_text(html_content):
|
|||||||
# Убираем переносы строк внутри квадратных скобок []
|
# Убираем переносы строк внутри квадратных скобок []
|
||||||
markdown_text = re.sub(r'\[(.*?)\]', lambda x: '[' + x.group(1).replace('\n', ' ') + ']', markdown_text, flags=re.DOTALL)
|
markdown_text = re.sub(r'\[(.*?)\]', lambda x: '[' + x.group(1).replace('\n', ' ') + ']', markdown_text, flags=re.DOTALL)
|
||||||
|
|
||||||
# # Удаление переносов строк и пробелов внутри текста
|
|
||||||
# markdown_text = re.sub(r'(?<!\n)\n(?!\n)', ' ', markdown_text)
|
|
||||||
|
|
||||||
# Удаление строк, содержащих '* * *'
|
# Удаление строк, содержащих '* * *'
|
||||||
markdown_text = re.sub(r'^.*\* \* \*.*$', '', markdown_text, flags=re.MULTILINE)
|
markdown_text = re.sub(r'^.*\* \* \*.*$', '', markdown_text, flags=re.MULTILINE)
|
||||||
|
|
||||||
markdown_text = re.sub(r'^.*\*', '*', markdown_text, flags=re.MULTILINE)
|
markdown_text = re.sub(r'^.*\* ', '* ', markdown_text, flags=re.MULTILINE)
|
||||||
|
|
||||||
|
# Убираем переносы строк, кроме строк, начинающихся с *
|
||||||
|
markdown_text = re.sub(r'^(?!\*).*?\n(?!\*)', lambda x: x.group(0).replace('\n', ' '), markdown_text, flags=re.MULTILINE)
|
||||||
|
|
||||||
|
# Преобразование всех ссылок с параметрами URL
|
||||||
|
markdown_text = convert_links(markdown_text)
|
||||||
|
|
||||||
# Работа с #
|
# Работа с #
|
||||||
patterns_to_remove = [
|
patterns_to_remove = [
|
||||||
r'###',
|
r'###',
|
||||||
r'##',
|
r'##',
|
||||||
|
r'#',
|
||||||
r'\[scripts\]\(\/tag\/scripts\) version \d+ ',
|
r'\[scripts\]\(\/tag\/scripts\) version \d+ ',
|
||||||
r'##\[scripts\]\(\) version \d+ ',
|
r'##\[scripts\]\(\) version \d+ ',
|
||||||
r'\d{4}×\d{3} \d+ KB'
|
r'\d{4}×\d{3} \d+ KB'
|
||||||
@@ -107,16 +112,34 @@ def html_to_text(html_content):
|
|||||||
markdown_text = re.sub(r'\n\s*\n', '\n', markdown_text)
|
markdown_text = re.sub(r'\n\s*\n', '\n', markdown_text)
|
||||||
|
|
||||||
# Изменение ссылок без описания
|
# Изменение ссылок без описания
|
||||||
markdown_text = re.sub(r'\[\]\((https:\/\/[^\)]+)\)', r'[content](\1)', markdown_text)
|
markdown_text = re.sub(r'\[\]\((https:\/\/[^\)]+)\)', r'[.](\1)', markdown_text)
|
||||||
markdown_text = re.sub(r'\[\s]\((https:\/\/[^\)]+)\)', r'[content](\1)', markdown_text)
|
markdown_text = re.sub(r'\[\s]\((https:\/\/[^\)]+)\)', r'[.](\1)', markdown_text)
|
||||||
|
|
||||||
# Удаление дублирующихся ссылок
|
# Удаление дублирующихся ссылок
|
||||||
markdown_text = remove_duplicate_links(markdown_text)
|
markdown_text = remove_duplicate_links(markdown_text)
|
||||||
|
|
||||||
|
# Добавление переноса после "История изменений:"
|
||||||
|
re.sub(r'^.*\* \* \*.*$', '', markdown_text)
|
||||||
|
markdown_text = re.sub(r'История изменений:', r'\n', markdown_text)
|
||||||
|
|
||||||
logging.debug(f"Текст после обработки {markdown_text}")
|
logging.debug(f"Текст после обработки {markdown_text}")
|
||||||
return markdown_text
|
return markdown_text
|
||||||
|
|
||||||
|
|
||||||
|
def convert_links(text):
|
||||||
|
url_pattern = re.compile(r'https?://[^\s\)]+')
|
||||||
|
return url_pattern.sub(lambda match: decode_url_params(match.group(0)), text)
|
||||||
|
|
||||||
|
|
||||||
|
def decode_url_params(url):
|
||||||
|
parsed_url = urllib.parse.urlparse(url)
|
||||||
|
query_params = urllib.parse.parse_qs(parsed_url.query)
|
||||||
|
for key, values in query_params.items():
|
||||||
|
if key.lower() == 'to' and values:
|
||||||
|
return urllib.parse.unquote(values[0])
|
||||||
|
return url
|
||||||
|
|
||||||
|
|
||||||
def remove_empty_lines(text_data):
|
def remove_empty_lines(text_data):
|
||||||
lines = text_data.splitlines()
|
lines = text_data.splitlines()
|
||||||
non_empty_lines = [line for line in lines if line.strip()]
|
non_empty_lines = [line for line in lines if line.strip()]
|
||||||
|
Reference in New Issue
Block a user