import requests
import random
import time
from bs4 import BeautifulSoup
import json

def login_to_dietpro(email, password):
    """
    Se connecte à DietPro et retourne une session authentifiée.
    """
    login_url = "https://www.dietpro.fr/customer/account/loginPost/"
    headers = {
        "User-Agent": "Mozilla/5.0",
        "Content-Type": "application/x-www-form-urlencoded"
    }
    payload = {
        "login[username]": email,
        "login[password]": password
    }

    session = requests.Session()
    response = session.post(login_url, data=payload, headers=headers)

    if "customer/account" in response.url:
        # print("✅ Connexion réussie !")
        return session
    else:
        # print("❌ Échec de la connexion")
        session.close()
        return None

def is_session_active(session):
    """
    Vérifie si la session est toujours active.
    """
    test_url = "https://www.dietpro.fr/customer/account/"
    response = session.get(test_url)
    return response.status_code == 200 and "customer/account" in response.url

def close_session(session):
    """
    Ferme proprement la session.
    """
    session.close()
    # print("✅ Session fermée proprement.")

def get_ldjson_from_url(session, url):
    user_agents = [
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
        "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1"
    ]
    headers = {
        "User-Agent": random.choice(user_agents),
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.5",
        "Referer": "https://www.google.com/"
    }

    wait_time = random.uniform(5, 15)
    # print(f"⏳ Attente de {wait_time:.2f} secondes avant d'accéder à l'URL cible...")
    time.sleep(wait_time)

    response = session.get(url, headers=headers)
    if response.status_code == 200:
        # print("✅ Page récupérée avec succès !")
        soup = BeautifulSoup(response.text, "html.parser")
        scripts = soup.find_all("script", type="application/ld+json")

        for script in scripts:
            try:
                ld_json = json.loads(script.string)
                if ld_json.get("@type") == "Product":
                    return ld_json
            except json.JSONDecodeError:
                pass
    return None
