# Sélecteurs CSS/XPath pour Backmarket.fr
# Mis à jour le 2026-01-13 après analyse du HTML réel

# ⚠️ IMPORTANT: Backmarket utilise une protection anti-bot
# - HTTP simple ne fonctionne PAS (retourne 403 Forbidden)
# - Playwright est OBLIGATOIRE pour récupérer le contenu
# - Les classes CSS sont relativement stables (heading-1, etc.)

# Titre du produit
# Classes simples et stables
title:
  - "h1.heading-1"
  - "h1"  # Fallback

# Prix principal
# ✓ JSON-LD schema.org disponible (prioritaire)
# Les prix sont dans <script type="application/ld+json">
price:
  - "div[data-test='price']"  # Fallback si JSON-LD n'est pas disponible
  - "span[class*='price']"

# Devise
# Toujours EUR pour Backmarket France
currency:
  - "meta[property='og:price:currency']"
  # Fallback: statique EUR

# État / Condition (spécifique aux produits reconditionnés)
# Backmarket vend du reconditionné, donc il y a des grades (Correct, Bon, Excellent, etc.)
condition:
  - "button[data-test='condition-button']"
  - "div[class*='condition']"
  - "span[class*='grade']"

# Images produit
images:
  - "img[alt]"  # Toutes les images avec alt
  # Filtrer celles qui contiennent le nom du produit

# Catégorie / breadcrumb
category:
  - "nav[aria-label='breadcrumb'] a"
  - ".breadcrumb a"

# Caractéristiques techniques
# Peuvent être dans des sections dépliables
specs_table:
  - "div[class*='specification']"
  - "div[class*='technical']"
  - "dl"

# SKU / référence produit
# Extraction depuis l'URL plus fiable
# URL pattern: /fr-fr/p/{slug}
# SKU = slug
sku:
  - "meta[property='product:retailer_item_id']"
  - "span[data-test='sku']"

# Stock / Disponibilité
stock_status:
  - "button[data-test='add-to-cart']"  # Si présent = en stock
  - "div[class*='availability']"

# Notes importantes:
# 1. ⚠️ Playwright OBLIGATOIRE - HTTP retourne 403 Forbidden
# 2. JSON-LD schema.org disponible → prioritaire pour prix/titre
# 3. Classes CSS relativement stables (heading-1, etc.)
# 4. SKU: extraire depuis URL /fr-fr/p/{slug}
# 5. Condition (grade) important pour Backmarket (Correct/Bon/Excellent)
# 6. Prix varie selon la condition choisie
# 7. Devise: toujours EUR pour France (static fallback OK)
