diff --git a/volk_load.py b/volk_load.py index fe61e4c..36f36cd 100644 --- a/volk_load.py +++ b/volk_load.py @@ -3,6 +3,7 @@ import json import time import traceback import socket +import re from datetime import datetime from urllib.request import urlopen from urllib.error import URLError, HTTPError @@ -279,10 +280,28 @@ def load_categories(): if not description: description = None - # Обновляем описание в базе данных + # Обработка маркдаун-ссылок на изображения в конце описания + image_url = None + if description: + # Паттерн для поиска маркдаун-ссылки вида ![](url "title") или ![](url) + # Ищем в конце текста (с учетом пробелов и переносов строк) + # Паттерн: ![](url) или ![](url "title") + # URL может содержать различные символы, включая скобки в URL-кодированном виде + markdown_image_pattern = r'!\[\]\(([^)]+?)(?:\s+"[^"]*")?\)\s*$' + match = re.search(markdown_image_pattern, description, re.MULTILINE) + if match: + image_url = match.group(1).strip() + # Удаляем маркдаун-ссылку из описания (включая пробелы и переносы строк перед ней) + description = re.sub(r'\s*!\[\]\([^)]+?(?:\s+"[^"]*")?\)\s*$', '', description, flags=re.MULTILINE).rstrip() + # Если после удаления описание стало пустым, обнуляем его + if not description.strip(): + description = None + log_message(f"Извлечен URL изображения для категории {category_id}: {image_url}") + + # Обновляем описание и image_url в базе данных cursor.execute( - "UPDATE categories SET description = %s WHERE ID = %s", - (description, category_id) + "UPDATE categories SET description = %s, image_url = %s WHERE ID = %s", + (description, image_url, category_id) ) connection.commit() desc_updated_count += 1