Исправление по переносам и ссылкам
This commit is contained in:
35
news-bot.py
35
news-bot.py
@@ -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()]
|
||||
|
Reference in New Issue
Block a user