From bc22a8a1292bda67b49a767154f4e9112b38b92b 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: Thu, 25 Jul 2024 20:53:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=83=D0=B1=D0=BB=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=BD=D0=BE=D0=B2=D0=BE=D1=81=D1=82=D0=B5?= =?UTF-8?q?=D0=B9=20=D0=BE=D1=82=20stable=20=D0=B4=D0=BE=20stable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- news-bot.py | 58 ++++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/news-bot.py b/news-bot.py index 60e3782..ac3bc95 100755 --- a/news-bot.py +++ b/news-bot.py @@ -23,8 +23,7 @@ url_post = "https://linux-gaming.ru/posts.json" url_news = f"https://linux-gaming.ru/c/news/{keys.cat_num}.json" url_vk_post = "https://api.vk.com/method/wall.post" url_vk_get = "https://api.vk.com/method/wall.get" -url_changelog = "https://raw.githubusercontent.com/xpamych/test_LG_news/main/changelog_ru" -#"https://gitlab.eterfund.ru/Castro-Fidel/PortWINE/raw/master/data_from_portwine/changelog_ru" +url_changelog = "https://gitlab.eterfund.ru/Castro-Fidel/PortWINE/raw/master/data_from_portwine/changelog_ru" heads_site = { "Content-Type": "application/json", @@ -34,7 +33,7 @@ heads_site = { params_get = { 'access_token': keys.user_token_vk, - 'v': '5.236', # Версия API + 'v': '5.199', # Версия API 'owner_id': str(keys.own_id), 'count': str(100), 'offset': str(0), @@ -42,7 +41,7 @@ params_get = { } logger = logging.getLogger() -logger.setLevel(logging.DEBUG) +logger.setLevel(logging.INFO) handler = colorlog.StreamHandler() handler.setFormatter(colorlog.ColoredFormatter( @@ -426,24 +425,25 @@ async def check_discord_public(): def vk_post(url, post_text, links=None): params_post = { 'access_token': keys.api_key_vk, - 'v': '5.236', # Версия API VK - 'owner_id': str(keys.own_id), - 'message': f'{post_text}' + 'v': '5.199', # Версия API VK + 'owner_id': str(keys.own_id) # Дополнительные параметры можно добавить здесь } - + 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) + resp_post = requests.post(url=url, params=params_post, data=data) if resp_post.status_code == 200: logging.info("Сообщение успешно опубликовано.") logging.info(resp_post.json()) # Выводим ответ сервера в формате JSON else: - logging.error(f"Ошибка при публикации сообщения в ВК:, {resp_post.status_code}") + logging.error(f"Ошибка при публикации сообщения в ВК:, {resp_post.status_code} - {resp_post.reason}") return resp_post except requests.RequestException as err: @@ -489,6 +489,7 @@ def check_vk_posts(): logging.warning(f"Постов на стене нет{vk_posts}") list_titles_and_ids = news() + list_titles_and_ids = [pair for pair in list_titles_and_ids if pair[0] >= keys.start_topic_id] if list_titles_and_ids: list_for_public = [] for topic_id, topic_title in list_titles_and_ids: @@ -499,25 +500,28 @@ def check_vk_posts(): if not list_for_public: logging.warning(f"Новостей для публикации в ВК нет") else: + # Отфильтровываем посты ниже определенного ID статьи for topic_id, topic_title in reversed(list_for_public): - if topic_id > keys.start_topic_id: - logging.info(f"Новости для публикации в ВК: {list_for_public}") - text_data = news_content(topic_id) - 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: - # Пример добавления изображения с постом - vk_post(url_vk_post, content, "photo-99238527_457244491") + logging.info(f"Новости для публикации в ВК: {list_for_public}") + text_data = news_content(topic_id) + 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: + # Пример добавления изображения с постом + vk_post(url_vk_post, content, "photo-99238527_457244491") + else: + if links: + vk_post(url_vk_post, content, links) else: - if links: - vk_post(url_vk_post, content, links) - else: - vk_post(url_vk_post, content) - else: - logging.warning(f"Новостей для публикации в ВК нет") + vk_post(url_vk_post, content) + else: + logging.warning(f"Не удалось получить текст новости {topic_id}") + break + else: + logging.warning(f"Новостей для публикации в ВК нет") def tg_post(post_text, client_tg):