From 9483aad1faa7fb9981738e9243e77f78c440a0a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=A5=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=D0=BE=D0=B2?= Date: Tue, 6 Aug 2024 20:23:25 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=86=D0=B8=D0=BA=D0=BB=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=92=D0=9A=20=D0=B8=20=D0=BD=D0=B5=D0=B1?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D1=88=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- news-bot.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/news-bot.py b/news-bot.py index ac3bc95..55fe81d 100755 --- a/news-bot.py +++ b/news-bot.py @@ -136,11 +136,10 @@ def html_to_text(html_content): # Перемещение ссылки на изображение в конец последней строки image_link = "[.](https://linux-gaming.ru/uploads/default/original/1X/5cfa59077a5275971401fab0114e56f3ffdd0ec4.png)" - - # Удаляем строку с изображением из текста - markdown_text = markdown_text.replace(image_link, '') - - markdown_text = markdown_text + image_link + if image_link in markdown_text: + # Удаляем строку с изображением из текста + markdown_text = markdown_text.replace(image_link, '') + markdown_text = markdown_text + image_link logging.debug(f"Текст после обработки {markdown_text}") return markdown_text @@ -368,7 +367,7 @@ async def get_discord_messages(client_discord, channel_id): return [] messages = [] - async for message in channel.history(limit=999): + async for message in channel.history(limit=100): logging.debug(message) messages.append(message.content) pattern = re.compile(r'----------------------------------------------------------\n### (.*?)\t\n', re.DOTALL) @@ -417,6 +416,7 @@ async def check_discord_public(): # Разбиваем содержимое на части по 4000 символов for i in range(0, len(content), 2000): await channel.send(content[i:i+2000]) + time.sleep(1.0) await client_discord.close() await client_discord.start(keys.discord_token) @@ -429,12 +429,15 @@ def vk_post(url, post_text, links=None): 'owner_id': str(keys.own_id) # Дополнительные параметры можно добавить здесь } + post_text = re.sub(r'\* ', '•', post_text) + print(post_text) + post_text = re.sub(r' •', '➜', post_text) + post_text = re.sub(r' •', '➜', post_text) data = { 'message': f'{post_text}' # Перемещаем текст статьи в тело POST-запроса } if links: params_post['attachments'] = links - try: # Отправляем POST-запрос к VK API resp_post = requests.post(url=url, params=params_post, data=data) @@ -507,6 +510,7 @@ def check_vk_posts(): if text_data: content = f"{topic_title}\t\n" + text_data + "\n" content = remove_markdown_links(content) + content = re.sub(r'https://linux-gaming.ru/uploads/default/original/1X/5cfa59077a5275971401fab0114e56f3ffdd0ec4.png', '\n', content, flags=re.DOTALL) links = extract_links(content) if "Кумулятивное обновление скриптов" in topic_title: @@ -519,7 +523,7 @@ def check_vk_posts(): vk_post(url_vk_post, content) else: logging.warning(f"Не удалось получить текст новости {topic_id}") - break + time.sleep(1.0) else: logging.warning(f"Новостей для публикации в ВК нет") @@ -533,7 +537,7 @@ def tg_post(post_text, client_tg): async def get_tg_messages(client_tg, channel_username_tg): messages = [] - async for message in client_tg.iter_messages(channel_username_tg, limit=999): + async for message in client_tg.iter_messages(channel_username_tg, limit=100): if message.text: # Проверка на NoneType logging.debug(f"Найдены сообщения в Telegram канале {message.text}") messages.append(message.text) @@ -569,7 +573,8 @@ async def check_tg_news(): break except FloodWaitError as e: logging.warning(f"Flood wait error: нужно подождать {e.seconds} секунд.") - await asyncio.sleep(e.seconds) # Ждем указанное время перед повторной попыткой + await asyncio.sleep(e.seconds) # Ждем + time.sleep(1.0)# указанное время перед повторной попыткой def run_job():