This commit is contained in:
@@ -100,7 +100,7 @@ DESC_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/"
|
|||||||
VOLK_API_VERSION = "1.0"
|
VOLK_API_VERSION = "1.0"
|
||||||
VOLK_CATEGORY_LIST = "https://base-dev.volk-nn.ru/api/categories?event=volk24&form=volk24_event"
|
VOLK_CATEGORY_LIST = "https://base-dev.volk-nn.ru/api/categories?event=volk24&form=volk24_event"
|
||||||
VOLK_CATEGORY_DESC_PREFIX = "https://base-dev.volk-nn.ru/api/category?event=volk24&form=volk24_event&category="
|
VOLK_CATEGORY_DESC_PREFIX = "https://base-dev.volk-nn.ru/api/category?event=volk24&form=volk24_event&category="
|
||||||
VOLK_EVENT_LIST_PREFIX = "https://base-dev.volk-nn.ru/api/applications?event=volk24&form=volk24_event&apps_on_page=100&page=0&category="
|
VOLK_EVENT_LIST_PREFIX = "https://base-dev.volk-nn.ru/api/applications?event=volk24&form=volk24_event&apps_on_page=200&page=0&category="
|
||||||
|
|
||||||
# Event status
|
# Event status
|
||||||
IS_EVENT = true
|
IS_EVENT = true
|
||||||
@@ -110,6 +110,7 @@ PROCESS_EVENT_UPDATES = false
|
|||||||
PUBLISH_SILENTLY = true
|
PUBLISH_SILENTLY = true
|
||||||
USE_SUBSCRIPTION_BOT = false
|
USE_SUBSCRIPTION_BOT = false
|
||||||
|
|
||||||
|
|
||||||
# OpenRouter
|
# OpenRouter
|
||||||
OR_KEY = "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"
|
OR_KEY = "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"
|
||||||
OR_MODEL_NAME = "qwen/qwen3-vl-235b-a22b-instruct"
|
OR_MODEL_NAME = "qwen/qwen3-vl-235b-a22b-instruct"
|
||||||
|
|||||||
+42
-6
@@ -87,11 +87,30 @@ def get_vk_posts():
|
|||||||
raise Exception(error_msg)
|
raise Exception(error_msg)
|
||||||
|
|
||||||
def process_post(post):
|
def process_post(post):
|
||||||
"""Извлекает необходимые данные из поста VK"""
|
"""Извлекает необходимые данные из поста VK, включая обработку репостов"""
|
||||||
post_id = post['id']
|
post_id = post['id']
|
||||||
vk_post_url = f"https://vk.ru/wall{VK_GROUP_ID}_{post_id}"
|
vk_post_url = f"https://vk.ru/wall{VK_GROUP_ID}_{post_id}"
|
||||||
published_at = datetime.utcfromtimestamp(post['date']).strftime('%Y-%m-%d %H:%M:%S')
|
published_at = datetime.utcfromtimestamp(post['date']).strftime('%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
# Проверка, является ли пост репостом
|
||||||
|
is_repost = 'copy_history' in post and len(post.get('copy_history', [])) > 0
|
||||||
|
|
||||||
|
# Если это репост, используем данные из оригинального поста
|
||||||
|
if is_repost:
|
||||||
|
original_post = post['copy_history'][0] # Берем первый элемент (обычно он один)
|
||||||
|
# Используем данные из оригинального поста
|
||||||
|
source_post = original_post
|
||||||
|
# Сохраняем информацию о том, что это репост, в тексте
|
||||||
|
repost_prefix = f"[Репост] "
|
||||||
|
original_owner_id = original_post.get('owner_id', 0)
|
||||||
|
original_post_id = original_post.get('id', 0)
|
||||||
|
original_url = f"https://vk.ru/wall{original_owner_id}_{original_post_id}"
|
||||||
|
repost_info = f"\n\n[Оригинальный пост: {original_url}]"
|
||||||
|
else:
|
||||||
|
source_post = post
|
||||||
|
repost_prefix = ""
|
||||||
|
repost_info = ""
|
||||||
|
|
||||||
# Инициализация полей опроса
|
# Инициализация полей опроса
|
||||||
is_poll = 0
|
is_poll = 0
|
||||||
poll_question = None
|
poll_question = None
|
||||||
@@ -102,8 +121,8 @@ def process_post(post):
|
|||||||
# Инициализация поля изображения
|
# Инициализация поля изображения
|
||||||
image_url = None
|
image_url = None
|
||||||
|
|
||||||
# Обработка вложений
|
# Обработка вложений из оригинального поста (если это репост) или текущего поста
|
||||||
for attachment in post.get('attachments', []):
|
for attachment in source_post.get('attachments', []):
|
||||||
if attachment['type'] == 'poll':
|
if attachment['type'] == 'poll':
|
||||||
is_poll = 1
|
is_poll = 1
|
||||||
poll = attachment['poll']
|
poll = attachment['poll']
|
||||||
@@ -123,9 +142,17 @@ def process_post(post):
|
|||||||
max_size = max(sizes, key=lambda s: s.get('width', 0) * s.get('height', 0))
|
max_size = max(sizes, key=lambda s: s.get('width', 0) * s.get('height', 0))
|
||||||
image_url = max_size['url']
|
image_url = max_size['url']
|
||||||
|
|
||||||
|
# Формируем текст поста: если это репост, добавляем префикс и информацию об оригинале
|
||||||
|
post_text = source_post.get('text', '')
|
||||||
|
if is_repost:
|
||||||
|
# Если у репоста есть свой текст, добавляем его перед текстом оригинала
|
||||||
|
if post.get('text', '').strip():
|
||||||
|
post_text = f"{post['text']}\n\n---\n\n{post_text}"
|
||||||
|
post_text = repost_prefix + post_text + repost_info
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'vk_post_id': post_id,
|
'vk_post_id': post_id,
|
||||||
'text': post['text'],
|
'text': post_text,
|
||||||
'image_url': image_url,
|
'image_url': image_url,
|
||||||
'vk_post_url': vk_post_url,
|
'vk_post_url': vk_post_url,
|
||||||
'published_at': published_at,
|
'published_at': published_at,
|
||||||
@@ -133,7 +160,8 @@ def process_post(post):
|
|||||||
'poll_question': poll_question,
|
'poll_question': poll_question,
|
||||||
'poll_options': poll_options,
|
'poll_options': poll_options,
|
||||||
'poll_multiple': poll_multiple,
|
'poll_multiple': poll_multiple,
|
||||||
'poll_end_date': poll_end_date
|
'poll_end_date': poll_end_date,
|
||||||
|
'is_repost': is_repost
|
||||||
}
|
}
|
||||||
|
|
||||||
def save_to_database(posts):
|
def save_to_database(posts):
|
||||||
@@ -186,7 +214,15 @@ def save_to_database(posts):
|
|||||||
auto_publish_reason = 'Нет (найден тег ' + VK_NO_REPOST_TAG + ')'
|
auto_publish_reason = 'Нет (найден тег ' + VK_NO_REPOST_TAG + ')'
|
||||||
else:
|
else:
|
||||||
auto_publish_reason = 'Нет'
|
auto_publish_reason = 'Нет'
|
||||||
log_message(f"Добавлен новый пост: ID {post['vk_post_id']}, Дата: {post['published_at']}, Автопубликация: {auto_publish_reason}")
|
|
||||||
|
# Добавляем информацию о репосте в лог
|
||||||
|
repost_info = ""
|
||||||
|
if post.get('is_repost', False):
|
||||||
|
repost_info = ", Репост: Да"
|
||||||
|
else:
|
||||||
|
repost_info = ", Репост: Нет"
|
||||||
|
|
||||||
|
log_message(f"Добавлен новый пост: ID {post['vk_post_id']}, Дата: {post['published_at']}, Автопубликация: {auto_publish_reason}{repost_info}")
|
||||||
except mysql.connector.Error as err:
|
except mysql.connector.Error as err:
|
||||||
error_msg = f"Ошибка при вставке поста {post['vk_post_id']}: {err}"
|
error_msg = f"Ошибка при вставке поста {post['vk_post_id']}: {err}"
|
||||||
log_message(error_msg)
|
log_message(error_msg)
|
||||||
|
|||||||
Reference in New Issue
Block a user