[ВОЛК] добавление User-agent
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-12-21 14:16:39 +03:00
parent e1e5e725c7
commit 0ec925ec2f
2 changed files with 86 additions and 20 deletions
+85 -19
View File
@@ -60,10 +60,21 @@ def safe_log_direct(message, category="TEST"):
# Игнорируем все исключения - эта функция должна быть максимально безопасной
pass
def test_category_description_load(category_id):
"""Тестирует загрузку описания категории"""
def test_category_description_load(category_id, category_number=None, total_count=None):
"""Тестирует загрузку описания категории
Args:
category_id: ID категории для тестирования
category_number: Номер категории в последовательности (опционально)
total_count: Общее количество категорий (опционально)
"""
if category_number and total_count:
header = f"НАЧАЛО ТЕСТИРОВАНИЯ [{category_number}/{total_count}] КАТЕГОРИИ: {category_id}"
else:
header = f"НАЧАЛО ТЕСТИРОВАНИЯ ЗАГРУЗКИ ОПИСАНИЯ КАТЕГОРИИ: {category_id}"
log_message("=" * 80)
log_message(f"НАЧАЛО ТЕСТИРОВАНИЯ ЗАГРУЗКИ ОПИСАНИЯ КАТЕГОРИИ: {category_id}")
log_message(header)
log_message("=" * 80)
# Проверка наличия префикса URL
@@ -231,13 +242,14 @@ def test_category_description_load(category_id):
description = None
# Итоговый результат
log_message("=" * 80)
log_message(f"ТЕСТИРОВАНИЕ ЗАВЕРШЕНО УСПЕШНО ДЛЯ КАТЕГОРИИ: {category_id}")
log_message("=" * 80)
if category_number and total_count:
footer = f"ТЕСТИРОВАНИЕ ЗАВЕРШЕНО УСПЕШНО [{category_number}/{total_count}] КАТЕГОРИИ: {category_id}"
else:
footer = f"ТЕСТИРОВАНИЕ ЗАВЕРШЕНО УСПЕШНО ДЛЯ КАТЕГОРИИ: {category_id}"
print(f"\nУСПЕХ: Описание категории {category_id} успешно загружено")
print(f"Размер описания: {len(description) if description else 0} символов")
print(f"Лог сохранен в: {TEST_LOG_FILE}")
log_message("=" * 80)
log_message(footer)
log_message("=" * 80)
return True
@@ -247,18 +259,30 @@ def main():
description='Тестирование загрузки описания категории из API VOLK',
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
Пример использования:
Примеры использования:
python volk_category_testing.py volk26_nri
python volk_category_testing.py volk26_nri volk26_other volk26_third
"""
)
parser.add_argument(
'category_id',
'category_ids',
type=str,
help='ID категории для тестирования (например: volk26_nri)'
nargs='+',
help='ID категорий для тестирования (от 1 до 10 штук, например: volk26_nri volk26_other)'
)
args = parser.parse_args()
category_id = args.category_id
category_ids = args.category_ids
# Проверка количества ID
if len(category_ids) == 0:
print("ОШИБКА: Не указан ни один ID категории")
parser.print_help()
sys.exit(1)
if len(category_ids) > 10:
print(f"ОШИБКА: Указано слишком много ID категорий ({len(category_ids)}). Максимум 10.")
sys.exit(1)
# Проверка наличия необходимых переменных окружения
if not VOLK_CATEGORY_DESC_PREFIX:
@@ -272,20 +296,62 @@ def main():
sys.exit(1)
log_message("=" * 80)
log_message("ЗАПУСК ТЕСТИРОВАНИЯ ЗАГРУЗКИ ОПИСАНИЯ КАТЕГОРИИ")
log_message("ЗАПУСК ТЕСТИРОВАНИЯ ЗАГРУЗКИ ОПИСАНИЯ КАТЕГОРИЙ")
log_message(f"Время запуска: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
log_message(f"ID категории: {category_id}")
log_message(f"Количество категорий для обработки: {len(category_ids)}")
log_message(f"ID категорий: {', '.join(category_ids)}")
log_message(f"Префикс URL: {VOLK_CATEGORY_DESC_PREFIX}")
log_message(f"Версия API: {VOLK_API_VERSION}")
log_message(f"Лог-файл: {TEST_LOG_FILE}")
log_message("=" * 80)
success = test_category_description_load(category_id)
# Обработка каждой категории последовательно
total_count = len(category_ids)
success_count = 0
fail_count = 0
if success:
sys.exit(0)
else:
for index, category_id in enumerate(category_ids, start=1):
log_message("")
log_message("")
log_message(f">>> ОБРАБОТКА КАТЕГОРИИ {index} из {total_count}: {category_id}")
log_message("")
print(f"\n[{index}/{total_count}] Обработка категории: {category_id}")
success = test_category_description_load(category_id, category_number=index, total_count=total_count)
if success:
success_count += 1
print(f"[{index}/{total_count}] ✓ УСПЕХ: Категория {category_id} обработана успешно")
else:
fail_count += 1
print(f"[{index}/{total_count}] ✗ ОШИБКА: Категория {category_id} не обработана")
# Итоговая статистика
log_message("")
log_message("")
log_message("=" * 80)
log_message("ИТОГОВАЯ СТАТИСТИКА")
log_message("=" * 80)
log_message(f"Всего категорий обработано: {total_count}")
log_message(f"Успешно: {success_count}")
log_message(f"С ошибками: {fail_count}")
log_message(f"Время завершения: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
log_message("=" * 80)
print(f"\n{'='*60}")
print(f"ИТОГИ:")
print(f" Всего категорий: {total_count}")
print(f" Успешно: {success_count}")
print(f" С ошибками: {fail_count}")
print(f" Лог сохранен в: {TEST_LOG_FILE}")
print(f"{'='*60}")
# Возвращаем код ошибки, если были неудачи
if fail_count > 0:
sys.exit(1)
else:
sys.exit(0)
if __name__ == "__main__":
main()