#!/bin/bash

BASE_URL="https://loja.wella.com.br"
OUT_DIR="$(dirname "$0")/rotas"
UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"

ROTAS=(
  "/Anti-Hair-Loss-Shampoo"
  "/Ultimate-Repair-Night-Serum"
  "/blondorplex-careline"
  "/cabelos/coloracao"
  "/cabelos/condicionador"
  "/cabelos/condicionador/sebastian-professional"
  "/cabelos/condicionador/wella-professionals"
  "/cabelos/finalizador-e-modelador"
  "/cabelos/finalizador-e-modelador/finalizador/sebastian-professional"
  "/cabelos/finalizador-e-modelador/finalizador/wella-professionals"
  "/cabelos/finalizador-e-modelador/leave-in"
  "/cabelos/finalizador-e-modelador/leave-in/sebastian-professional"
  "/cabelos/finalizador-e-modelador/leave-in/wella-professionals"
  "/cabelos/finalizador-e-modelador/modelador/sebastian-professional"
  "/cabelos/kits"
  "/cabelos/shampoo"
  "/cabelos/shampoo/sebastian-professional"
  "/cabelos/shampoo/wella-professionals"
  "/cabelos/tipos-de-cabelos/Indisciplinados-e-rebeldes"
  "/cabelos/tipos-de-cabelos/cacheados-ondulados-ou-crespos"
  "/cabelos/tipos-de-cabelos/coloridos"
  "/cabelos/tipos-de-cabelos/com-afinamento"
  "/cabelos/tipos-de-cabelos/normais-ou-sem-quimica"
  "/cabelos/tipos-de-cabelos/opacos"
  "/cabelos/tipos-de-cabelos/quimicamente-tratados"
  "/cabelos/tipos-de-cabelos/sensiveis"
  "/cabelos/tratamento/anticaspa"
  "/cabelos/tratamento/antirresiduos"
  "/cabelos/tratamento/brilho"
  "/cabelos/tratamento/fixacao"
  "/cabelos/tratamento/hidratacao"
  "/cabelos/tratamento/mascara"
  "/cabelos/tratamento/mascara/sebastian-professional"
  "/cabelos/tratamento/mascara/wella-professionals"
  "/cabelos/tratamento/nutricao"
  "/cabelos/tratamento/protecao-de-cor"
  "/cabelos/tratamento/reconstrucao"
  "/cabelos/tratamento/revitalizacao"
  "/cabelos/tratamento/volume"
  "/colecao-color-perfect"
  "/colecao-color-touch"
  "/colecao-descolorante-professional"
  "/colecao-emulsoes"
  "/colecao-illumina-color"
  "/colecao-koleston"
  "/colecao-lancamentos"
  "/colecao-soft-color"
  "/conteudo-deixe-nos-ajudar"
  "/conteudo-entregas"
  "/conteudo-faq"
  "/conteudo-pagamentos"
  "/conteudo-politica-de-privacidade"
  "/conteudo-politica-de-trocas"
  "/hidratacao"
  "/invigo-sun"
  "/koleston-perfect"
  "/lancamento-opi-barbie"
  "/lancamento-opi-repair-mode"
  "/marca/OPI"
  "/marca/nioxin"
  "/marca/opi"
  "/marca/sebastian-professional"
  "/marca/wella-professionals"
  "/nioxin-condicionador"
  "/nioxin-mascara"
  "/nioxin-shampoo"
  "/nioxin-sistema1"
  "/nioxin-sistema2"
  "/nioxin-sistema3"
  "/nioxin-sistema4"
  "/nioxin-tratamento-intensivo"
  "/no-breaker"
  "/ofertas"
  "/opi-infinite-shine"
  "/opi-zodiac"
  "/sac"
  "/sebastian-dark-oil"
  "/sebastian-hibridos"
  "/sebastian-oleo-capilar"
  "/sebastian-penetraitt"
  "/sebastian-potion-9"
  "/sebastian-realcador-de-brilho"
  "/sebastian-sobre-a-marca"
  "/sebastian-spray-fixador"
  "/sebastian-styling"
  "/shinefinity"
  "/todos-marcas/nioxin-todos"
  "/todos-os-tratamentos"
  "/unhas/esmaltes"
  "/unhas/tratamentos/bases"
  "/unhas/tratamentos/finalizadores"
  "/veganos"
  "/wella-balance"
  "/wella-blonde-recharge"
  "/wella-blondor"
  "/wella-blondorplex"
  "/wella-color-brilliance"
  "/wella-color-motion"
  "/wella-eimi"
  "/wella-elements"
  "/wella-fixacao"
  "/wella-fusion"
  "/wella-invigo"
  "/wella-modelador"
  "/wella-nutri-enrich"
  "/wella-nutricurls"
  "/wella-oil-reflections"
  "/wella-oleo-capilar"
  "/wella-protetor-termico"
  "/wella-realcador-de-brilho"
  "/wella-ultimate-luxe-oil"
  "/wella-ultimate-repair"
  "/wella-volume-boost"
)

TOTAL=${#ROTAS[@]}
COUNT=0
ERROS=0

echo "Iniciando download de $TOTAL rotas..."
echo ""

for ROTA in "${ROTAS[@]}"; do
  COUNT=$((COUNT + 1))
  URL="${BASE_URL}${ROTA}"
  DEST="${OUT_DIR}${ROTA}/index.html"

  mkdir -p "$(dirname "$DEST")"

  HTTP_CODE=$(curl -s -L -w "%{http_code}" \
    -H "User-Agent: $UA" \
    -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" \
    -H "Accept-Language: pt-BR,pt;q=0.9" \
    -o "$DEST" \
    "$URL")

  if [ "$HTTP_CODE" -eq 200 ] || [ "$HTTP_CODE" -eq 301 ] || [ "$HTTP_CODE" -eq 302 ]; then
    echo "[$COUNT/$TOTAL] OK ($HTTP_CODE)  $ROTA"
  else
    echo "[$COUNT/$TOTAL] ERRO ($HTTP_CODE)  $ROTA"
    ERROS=$((ERROS + 1))
  fi

  sleep 0.3
done

echo ""
echo "Concluído: $((TOTAL - ERROS)) OK, $ERROS erros."
