#!/bin/bash

# 🚀 Скрипт-лаунчер для запуска эксперимента по анализу видео 🚀
#
# Этот Shell-скрипт упрощает запуск основного Python-скрипта face_report.py,
# активируя необходимое виртуальное окружение и передавая ему параметры для
# тестирования производительности распознавания лиц.
#
# Напоминание: Весь репозиторий является технической демонстрацией и не предназначен
# для реального использования в системах мониторинга.
#
# Основные задачи:
# - Активация изолированного Python-окружения (.venv), созданного скриптом setup_env.sh.
# - Запуск face_report.py с предустановленными параметрами (путь к видео, модель и т.д.).
# - Предоставление закомментированных "стратегий" для быстрого переключения между
#   режимами тестирования (быстрый HOG vs. точный CNN на GPU).
# - Проверка успешности выполнения и создания итогового файла отчета.
#
# Порядок использования:
# 1. Подготовьте окружение, запустив setup_env.sh.
# 2. Укажите путь к вашим видео в переменной INPUT_VIDEO_DIR.
# 3. Запустите этот скрипт.

#  Смотреть нагрузку на видеокарту: $ watch -n 10 -c --no-wrap nvidia-smi
#
# Автор: Михаил Шардин https://shardin.name/
# Дата создания: 19.08.2025
# Версия: 1.0
#
# Актуальная версия скрипта всегда здесь: https://github.com/empenoso/doorcam-face-report/
#

set -e

INPUT_VIDEO_DIR="/home/mike/Видео/perm_domofon" # . Путь к директории с видео
OUTPUT_HTML_FILE="face_report_perm_domofon.html"

VENV_DIR=".venv"

echo "=== Запуск анализа видео ==="

# --- Проверка виртуального окружения ---
if [ ! -d "$VENV_DIR" ]; then
    echo -e "\033[1;31m[ERROR] Виртуальное окружение '$VENV_DIR' не найдено. Сначала запусти setup_env.sh.\033[0m"
    exit 1
fi

echo "[INFO] Активация виртуального окружения..."
source "$VENV_DIR/bin/activate"

echo -e "\n[INFO] Запуск анализа..."

# Выберите одну из стратегий ниже, раскомментировав нужную строку
#
# --- Стратегия 1: Точная модель CNN (рекомендуется для начала) ---
# Используем точную, но медленную модель CNN. Масштаб не меняем (1.0), чтобы не терять детали.
# Пропуск кадров уменьшен до 15 для большего шанса поймать лицо.
# --debug включен для визуальной проверки.
echo "[STRATEGY] Используем точную модель CNN без масштабирования и с включенной отладкой."
python3 face_report.py \
    --input-dir "$INPUT_VIDEO_DIR" \
    --output-html "$OUTPUT_HTML_FILE" \
    --model cnn \
    --scale 1.0 \
    --skip-frames 1 \
#    --debug

# # --- Стратегия 2: Более чувствительная HOG (если CNN слишком медленно) ---
# # Используем быструю модель HOG, но без уменьшения кадра.
# echo "[STRATEGY] Используем быструю модель HOG без масштабирования."
# python3 face_report.py \
#     --input-dir "$INPUT_VIDEO_DIR" \
#     --output-html "$OUTPUT_HTML_FILE" \
#     --model hog \
#     --scale 1.0 \
#     --skip-frames 15 \
#     --debug

# # --- Стратегия 3: Исходный вариант (для сравнения) ---
# echo "[STRATEGY] Используем исходные параметры (hog, scale 0.5)."
# python3 face_report.py \
#     --input-dir "$INPUT_VIDEO_DIR" \
#     --output-html "$OUTPUT_HTML_FILE" \
#     --model hog \
#     --scale 0.5 \
#     --skip-frames 25 \
#     --debug

# === Проверка результата ===
if [ -s "$OUTPUT_HTML_FILE" ]; then
    echo -e "\n\033[1;32m[SUCCESS] Анализ завершен. Открой '$OUTPUT_HTML_FILE' в браузере.\033[0m"
else
    echo -e "\n\033[1;31m[ERROR] Файл '$OUTPUT_HTML_FILE' пуст или не создан.\033[0m"
    exit 1
fi