#!/bin/bash

# === CONFIGURATION ===
EMBY_URL="http://emby-gpu:8096"
EMBY_API_KEY="xxxxxxxxxxxxxxxxxxxx"
APPRISE_URL="http://localhost:8000/notify"
WAIT_TIMEOUT=180      # Temps max d'attente (en secondes)
WAIT_INTERVAL=5       # Temps entre chaque vérification (secondes)
REQUIRED_EXTS=("*.nfo" "*.jpg" "*.srt")  # Extensions à attendre

# === DÉTECTION DU DOSSIER MEDIA ===
detect_media_folder() {
    if [[ -n "$Radarr_Movie_Path" ]]; then
        LIBRARY_TYPE="Movies"
        MEDIA_PATH="$Radarr_Movie_Path"
    elif [[ -n "$Sonarr_Series_Path" ]]; then
        LIBRARY_TYPE="Series"
        MEDIA_PATH="$Sonarr_Series_Path"
    else
        echo "❌ Impossible de détecter le chemin media (Radarr/Sonarr)."
        exit 1
    fi
}

# === ATTENTE DES FICHIERS METADATA ===
wait_for_metadata() {
    local deadline=$((SECONDS + WAIT_TIMEOUT))
    echo "⏳ Attente de fichiers metadata dans : $MEDIA_PATH"

    while (( SECONDS < deadline )); do
        for ext in "${REQUIRED_EXTS[@]}"; do
            if find "$MEDIA_PATH" -type f -iname "$ext" -print -quit | grep -q .; then
                echo "✅ Métadonnées détectées : $ext"
                return 0
            fi
        done
        sleep "$WAIT_INTERVAL"
    done

    echo "⚠️ Timeout atteint ($WAIT_TIMEOUT s), aucune métadonnée trouvée."
    return 1
}

# === OBTENIR ID BIBLIOTHÈQUE PAR NOM ===
get_library_id() {
    local name="$1"
    curl -s "$EMBY_URL/emby/Library/SelectableMediaFolders?api_key=$EMBY_API_KEY" \
        | jq -r ".Items[] | select(.Name==\"$name\") | .Id"
}

# === DÉCLENCHER LE SCAN DE LA LIBRARY ===
trigger_scan() {
    local name="$1"
    local id="$2"
    curl -s -X POST "$EMBY_URL/Library/Refresh?api_key=$EMBY_API_KEY&libraryId=$id" > /dev/null \
        && echo "✅ Scan déclenché pour la bibliothèque '$name'"
}

# === NOTIFICATION APPRISE / DISCORD ===
send_notification() {
    local msg="$1"
    curl -fsS -X POST "$APPRISE_URL" -d "$msg" > /dev/null \
        && echo "🔔 Notification envoyée"
}

# === MAIN ===

detect_media_folder
echo "📁 Dossier détecté : $MEDIA_PATH"
echo "📚 Type de bibliothèque : $LIBRARY_TYPE"

wait_for_metadata || exit 0

LIB_ID=$(get_library_id "$LIBRARY_TYPE")
if [[ -n "$LIB_ID" ]]; then
    trigger_scan "$LIBRARY_TYPE" "$LIB_ID"
    send_notification "📡 Emby GPU : Scan '$LIBRARY_TYPE' déclenché après détection metadata dans $MEDIA_PATH"
else
    echo "❌ Bibliothèque Emby '$LIBRARY_TYPE' introuvable"
    exit 1
fi