[ВОЛК] Выделение URL изображения из описания категории
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-12-25 21:10:06 +03:00
parent 2284fd3263
commit 399b02d29f
+22 -3
View File
@@ -3,6 +3,7 @@ import json
import time import time
import traceback import traceback
import socket import socket
import re
from datetime import datetime from datetime import datetime
from urllib.request import urlopen from urllib.request import urlopen
from urllib.error import URLError, HTTPError from urllib.error import URLError, HTTPError
@@ -279,10 +280,28 @@ def load_categories():
if not description: if not description:
description = None 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( cursor.execute(
"UPDATE categories SET description = %s WHERE ID = %s", "UPDATE categories SET description = %s, image_url = %s WHERE ID = %s",
(description, category_id) (description, image_url, category_id)
) )
connection.commit() connection.commit()
desc_updated_count += 1 desc_updated_count += 1