import requests
from bs4 import BeautifulSoup
import os
import time

# URL de base
base_url = "https://daspower.fr/?Tarifs"
# URL de l'image par défaut
default_image_url = "https://daspower.fr/DAS/img/min/defaut.png"
# Dossier pour sauvegarder les images
images_root_folder = "IMAGES"
os.makedirs(images_root_folder, exist_ok=True)

# Récupérer le contenu de la page principale
print("Fetching base URL:", base_url)
response = requests.get(base_url)
soup = BeautifulSoup(response.text, 'html.parser')

# Trouver tous les liens de marque avec la classe "logoMarque"
marques = soup.find_all("a", class_="logoMarque")
if not marques:
    print("No marques found.")
    
for marque in marques:
    marque_name = marque.find("img")['alt'] if marque.find("img") else 'Nom inconnu'
    marque_url = base_url.split('?')[0] + marque['href']
    print(f"Processing marque: {marque_name}, URL: {marque_url}")
    
    response_marque = requests.get(marque_url)
    soup_marque = BeautifulSoup(response_marque.text, 'html.parser')

    # Trouver les modèles
    modele_container = soup_marque.find("div", class_="modeleContainer")
    if not modele_container:
        print(f"No models found for marque {marque_name}")
        continue
    modeles = modele_container.find_all("a", class_="selectCar")

    for modele in modeles:
        modele_name = modele.get_text(strip=True)
        image_tag = modele.find("img")
        image_src = image_tag['src'] if image_tag else ""

        # Créer un dossier pour chaque modèle
        marque_folder = os.path.join(images_root_folder, marque_name)
        modele_folder = os.path.join(marque_folder, modele_name)
        os.makedirs(modele_folder, exist_ok=True)

        # Déterminer l'URL de l'image (ajouter le domaine si nécessaire)
        image_url = "https://daspower.fr" + image_src if image_src.startswith("/DAS") else image_src

        # Nommer l'image comme "defaut.png" si l'URL est `defaut.png`, sinon avec le nom du modèle
        image_filename = "defaut.png" if "defaut.png" in image_src else f"{modele_name}.png"
        image_path = os.path.join(modele_folder, image_filename)

        # Fonction pour télécharger l'image
        def download_image(url, path):
            try:
                response = requests.get(url, timeout=5)
                if response.status_code == 200 and len(response.content) > 100:  # Vérifier la taille minimale
                    with open(path, 'wb') as img_file:
                        img_file.write(response.content)
                    return True
            except requests.RequestException:
                pass
            return False

        # Télécharger l'image spécifique ou l'image par défaut sous le nom approprié
        if "defaut.png" in image_src:
            download_image(default_image_url, image_path)
            print(f"Downloaded default image for {modele_name} as {image_path}.")
        else:
            success = download_image(image_url, image_path)
            if not success:
                # Si l'image spécifique échoue, utiliser l'image par défaut sous le nom "defaut.png"
                download_image(default_image_url, os.path.join(modele_folder, "defaut.png"))
                print(f"Failed to download specific image for {modele_name}. Using default image as {os.path.join(modele_folder, 'defaut.png')}.")

        time.sleep(0.5)  # Pause entre chaque téléchargement
