Исправление по переносам и ссылкам

This commit is contained in:
2024-06-02 13:44:52 +03:00
parent c66f6d693b
commit 9d8e823f7f

View File

@@ -3,6 +3,7 @@
import re
import sys
import time
import urllib.parse
import discord
import logging
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'(?<!\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'^(?!\*).*?\n(?!\*)', lambda x: x.group(0).replace('\n', ' '), markdown_text, flags=re.MULTILINE)
# Преобразование всех ссылок с параметрами URL
markdown_text = convert_links(markdown_text)
# Работа с #
patterns_to_remove = [
r'###',
r'##',
r'#',
r'\[scripts\]\(\/tag\/scripts\) version \d+ ',
r'##\[scripts\]\(\) version \d+ ',
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'\[\]\((https:\/\/[^\)]+)\)', r'[content](\1)', markdown_text)
markdown_text = re.sub(r'\[\s]\((https:\/\/[^\)]+)\)', r'[content](\1)', markdown_text)
markdown_text = re.sub(r'\[\]\((https:\/\/[^\)]+)\)', r'[.](\1)', markdown_text)
markdown_text = re.sub(r'\[\s]\((https:\/\/[^\)]+)\)', r'[.](\1)', 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}")
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):
lines = text_data.splitlines()
non_empty_lines = [line for line in lines if line.strip()]