[ВОЛК] снятие проверки времени изменений для ВОЛК; удаление лишних отладочных выводов в ВОЛК загрузчике
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
+54
-26
@@ -25,6 +25,7 @@ DESC_PREFIX = os.getenv('DESC_PREFIX')
|
|||||||
PZK_PREFIX = os.getenv('PZK_PREFIX')
|
PZK_PREFIX = os.getenv('PZK_PREFIX')
|
||||||
LOG_FILE = os.getenv('LOG_FILE', 'evtg_publisher.log')
|
LOG_FILE = os.getenv('LOG_FILE', 'evtg_publisher.log')
|
||||||
EVENT_POST_DELAY = int(os.getenv('EVENT_POST_DELAY', 0)) # Задержка в минутах
|
EVENT_POST_DELAY = int(os.getenv('EVENT_POST_DELAY', 0)) # Задержка в минутах
|
||||||
|
WORKMODE = os.getenv('WORKMODE', 'ZILANT') # Режим работы: ZILANT или VOLK
|
||||||
|
|
||||||
# Параметры длины сообщений
|
# Параметры длины сообщений
|
||||||
MAX_CAPTION_LENGTH = int(os.getenv('MAX_CAPTION_LENGTH', 1000))
|
MAX_CAPTION_LENGTH = int(os.getenv('MAX_CAPTION_LENGTH', 1000))
|
||||||
@@ -230,23 +231,39 @@ async def tg_post_event_by_id(id_event):
|
|||||||
cursorclass=pymysql.cursors.DictCursor
|
cursorclass=pymysql.cursors.DictCursor
|
||||||
)
|
)
|
||||||
|
|
||||||
# Вычисляем время, до которого должно быть изменено событие для публикации
|
# Проверка времени изменения только в режиме ZILANT
|
||||||
modified_before = datetime.now(timezone.utc) - timedelta(minutes=EVENT_POST_DELAY)
|
|
||||||
|
|
||||||
with conn.cursor() as cursor:
|
with conn.cursor() as cursor:
|
||||||
cursor.execute("""
|
if WORKMODE == "ZILANT":
|
||||||
SELECT id_event, number, tags, unit_name, name, about, about_social_picture, tg_message_id
|
# Вычисляем время, до которого должно быть изменено событие для публикации
|
||||||
FROM events
|
modified_before = datetime.now(timezone.utc) - timedelta(minutes=EVENT_POST_DELAY)
|
||||||
WHERE id_event = %s
|
|
||||||
AND marked_to_publication = True
|
|
||||||
AND is_posted_tg = False
|
|
||||||
AND modified <= %s
|
|
||||||
""", (id_event, modified_before))
|
|
||||||
event = cursor.fetchone()
|
|
||||||
|
|
||||||
if not event:
|
cursor.execute("""
|
||||||
logger.info(f"Событие ID {id_event} не найдено, уже опубликовано или изменено менее чем {EVENT_POST_DELAY} минут назад")
|
SELECT id_event, number, tags, unit_name, name, about, about_social_picture, tg_message_id
|
||||||
return
|
FROM events
|
||||||
|
WHERE id_event = %s
|
||||||
|
AND marked_to_publication = True
|
||||||
|
AND is_posted_tg = False
|
||||||
|
AND modified <= %s
|
||||||
|
""", (id_event, modified_before))
|
||||||
|
event = cursor.fetchone()
|
||||||
|
|
||||||
|
if not event:
|
||||||
|
logger.info(f"Событие ID {id_event} не найдено, уже опубликовано или изменено менее чем {EVENT_POST_DELAY} минут назад")
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
# В режиме VOLK проверка времени не выполняется
|
||||||
|
cursor.execute("""
|
||||||
|
SELECT id_event, number, tags, unit_name, name, about, about_social_picture, tg_message_id
|
||||||
|
FROM events
|
||||||
|
WHERE id_event = %s
|
||||||
|
AND marked_to_publication = True
|
||||||
|
AND is_posted_tg = False
|
||||||
|
""", (id_event,))
|
||||||
|
event = cursor.fetchone()
|
||||||
|
|
||||||
|
if not event:
|
||||||
|
logger.info(f"Событие ID {id_event} не найдено или уже опубликовано")
|
||||||
|
return
|
||||||
|
|
||||||
old_message_id = event.get('tg_message_id') # Сохраняем старый ID сообщения
|
old_message_id = event.get('tg_message_id') # Сохраняем старый ID сообщения
|
||||||
bot = Bot(token=BOT_TOKEN)
|
bot = Bot(token=BOT_TOKEN)
|
||||||
@@ -299,18 +316,29 @@ async def tg_post_all_events():
|
|||||||
cursorclass=pymysql.cursors.DictCursor
|
cursorclass=pymysql.cursors.DictCursor
|
||||||
)
|
)
|
||||||
|
|
||||||
# Вычисляем время, до которого должно быть изменено событие для публикации
|
|
||||||
modified_before = datetime.now(timezone.utc) - timedelta(minutes=EVENT_POST_DELAY)
|
|
||||||
|
|
||||||
with conn.cursor() as cursor:
|
with conn.cursor() as cursor:
|
||||||
cursor.execute("""
|
# Проверка времени изменения только в режиме ZILANT
|
||||||
SELECT id_event
|
if WORKMODE == "ZILANT":
|
||||||
FROM events
|
# Вычисляем время, до которого должно быть изменено событие для публикации
|
||||||
WHERE marked_to_publication = True
|
modified_before = datetime.now(timezone.utc) - timedelta(minutes=EVENT_POST_DELAY)
|
||||||
AND is_posted_tg = False
|
|
||||||
AND modified <= %s
|
cursor.execute("""
|
||||||
LIMIT 5
|
SELECT id_event
|
||||||
""", (modified_before,))
|
FROM events
|
||||||
|
WHERE marked_to_publication = True
|
||||||
|
AND is_posted_tg = False
|
||||||
|
AND modified <= %s
|
||||||
|
LIMIT 5
|
||||||
|
""", (modified_before,))
|
||||||
|
else:
|
||||||
|
# В режиме VOLK проверка времени не выполняется
|
||||||
|
cursor.execute("""
|
||||||
|
SELECT id_event
|
||||||
|
FROM events
|
||||||
|
WHERE marked_to_publication = True
|
||||||
|
AND is_posted_tg = False
|
||||||
|
LIMIT 5
|
||||||
|
""")
|
||||||
events = cursor.fetchall()
|
events = cursor.fetchall()
|
||||||
|
|
||||||
event_count = 0
|
event_count = 0
|
||||||
|
|||||||
@@ -172,7 +172,6 @@ def load_categories():
|
|||||||
try:
|
try:
|
||||||
desc_url = VOLK_CATEGORY_DESC_PREFIX + category_id
|
desc_url = VOLK_CATEGORY_DESC_PREFIX + category_id
|
||||||
log_message(f"Запрос описания для категории {category_id} из {desc_url}")
|
log_message(f"Запрос описания для категории {category_id} из {desc_url}")
|
||||||
log_message("отладочное сообщение для проверки вывода в лог-файл")
|
|
||||||
|
|
||||||
desc_response = None
|
desc_response = None
|
||||||
try:
|
try:
|
||||||
@@ -180,10 +179,7 @@ def load_categories():
|
|||||||
from urllib.request import Request
|
from urllib.request import Request
|
||||||
req = Request(desc_url, headers={'User-Agent': 'Mozilla/5.0 (Telefaust)'})
|
req = Request(desc_url, headers={'User-Agent': 'Mozilla/5.0 (Telefaust)'})
|
||||||
log_message(f"request response = {req}", "DEBUG")
|
log_message(f"request response = {req}", "DEBUG")
|
||||||
safe_log_direct("run urlopen", "DEBUG")
|
|
||||||
response = urlopen(req, timeout=30)
|
response = urlopen(req, timeout=30)
|
||||||
safe_log_direct("done urlopen", "ERROR")
|
|
||||||
log_message("urlopen успешно выполнен")
|
|
||||||
except (URLError, HTTPError, OSError, socket.gaierror, socket.timeout, ConnectionError) as e:
|
except (URLError, HTTPError, OSError, socket.gaierror, socket.timeout, ConnectionError) as e:
|
||||||
# Используем безопасное логирование для критических ошибок
|
# Используем безопасное логирование для критических ошибок
|
||||||
safe_log_direct("ПЕРЕХВАЧЕНА СЕТЕВАЯ ОШИБКА urlopen", "ERROR")
|
safe_log_direct("ПЕРЕХВАЧЕНА СЕТЕВАЯ ОШИБКА urlopen", "ERROR")
|
||||||
@@ -225,10 +221,8 @@ def load_categories():
|
|||||||
with response:
|
with response:
|
||||||
# Явно указываем кодировку UTF-8 при декодировании
|
# Явно указываем кодировку UTF-8 при декодировании
|
||||||
raw_data = response.read()
|
raw_data = response.read()
|
||||||
log_message("raw data read")
|
|
||||||
try:
|
try:
|
||||||
decoded_data = raw_data.decode('utf-8')
|
decoded_data = raw_data.decode('utf-8')
|
||||||
log_message("data decoded")
|
|
||||||
except UnicodeDecodeError as e:
|
except UnicodeDecodeError as e:
|
||||||
error_msg = f"Ошибка декодирования ответа для категории {category_id}: {e}. Попытка декодирования как latin-1."
|
error_msg = f"Ошибка декодирования ответа для категории {category_id}: {e}. Попытка декодирования как latin-1."
|
||||||
log_message(error_msg, "WARNING")
|
log_message(error_msg, "WARNING")
|
||||||
@@ -236,7 +230,6 @@ def load_categories():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
desc_response = json.loads(decoded_data)
|
desc_response = json.loads(decoded_data)
|
||||||
log_message("json loaded")
|
|
||||||
except json.JSONDecodeError as e:
|
except json.JSONDecodeError as e:
|
||||||
error_msg = f"Ошибка парсинга JSON для категории {category_id}: {e}. Первые 500 символов ответа: {decoded_data[:500]}"
|
error_msg = f"Ошибка парсинга JSON для категории {category_id}: {e}. Первые 500 символов ответа: {decoded_data[:500]}"
|
||||||
log_message(error_msg, "ERROR")
|
log_message(error_msg, "ERROR")
|
||||||
|
|||||||
Reference in New Issue
Block a user