import os
import sys
from pathlib import Path
from dotenv import load_dotenv

# Base Directory
BASE_DIR = Path(__file__).resolve().parent

# Load environment variables
load_dotenv(BASE_DIR / ".env", override=True)

# Chrome Paths (Supports Linux/cPanel and Windows)
DEFAULT_CHROME_PATHS = [
    # Linux / cPanel standard paths
    "/usr/bin/google-chrome",
    "/usr/bin/google-chrome-stable",
    "/usr/bin/chromium",
    "/usr/bin/chromium-browser",
    "/snap/bin/chromium",
    # Windows paths
    r"C:\Program Files\Google\Chrome\Application\chrome.exe",
    r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
    os.path.expandvars(r"%LocalAppData%\Google\Chrome\Application\chrome.exe"),
]

def find_chrome_executable():
    env_path = os.getenv("CHROME_PATH")
    if env_path and os.path.exists(env_path):
        return env_path
    for path in DEFAULT_CHROME_PATHS:
        if os.path.exists(path):
            return path
    # If on Linux/cPanel and no standalone binary found, return None so Playwright uses its installed chromium
    if sys.platform != "win32":
        return None
    return "chrome.exe"

class Config:
    BASE_DIR = BASE_DIR
    # Server configuration
    SECRET_KEY = os.getenv("SECRET_KEY", "dse-sosmed-automation-secret-2026")
    HOST = os.getenv("HOST", "127.0.0.1")
    PORT = int(os.getenv("PORT", 5000))
    DEBUG = os.getenv("DEBUG", "False").lower() in ("true", "1")

    # Isolated Browser & CDP Configuration
    HEADLESS = os.getenv("HEADLESS", "false").lower() in ("true", "1") or (sys.platform != "win32" and not os.getenv("DISPLAY"))
    CDP_PORT = int(os.getenv("CDP_PORT", 9222))
    CDP_URL = f"http://localhost:{CDP_PORT}"
    BOT_PROFILE_DIR = BASE_DIR / "BotProfile_Sosmed"
    CHROME_EXECUTABLE = find_chrome_executable()

    # Gemini AI
    GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "")
    GEMINI_MODEL = os.getenv("GEMINI_MODEL", "gemini-3.6-flash")

    # Excel Tracker
    TRACKER_FILE = BASE_DIR / "tracker-posting.xlsx"

    # Uploads & Experimental
    UPLOAD_FOLDER = BASE_DIR / "uploads"
    AI_FLYERS_FOLDER = BASE_DIR / "uploads" / "ai_flyers"
    CONTOH_FLYER_FOLDER = BASE_DIR / "contoh flyer"
    ALLOWED_EXTENSIONS = {"png", "jpg", "jpeg", "webp", "gif", "mp4"}
    MAX_CONTENT_LENGTH = 50 * 1024 * 1024  # 50MB

    # Experimental Feature Flag
    ENABLE_EXPERIMENTAL_STUDIO = True

    # Automation
    ACTION_TIMEOUT_MS = 30000
    NAVIGATION_TIMEOUT_MS = 60000
