#!/usr/bin/env bash
# download-lyrics-pass2.sh
# Segundo pase de letras para canciones no encontradas en el pase 1.
# Usa términos de búsqueda limpios mapeados manualmente por número de canción.
set -euo pipefail

PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
SONGS_DIR="$PROJECT_ROOT/songs"
LYRICS_DIR="$PROJECT_ROOT/lyrics"

mkdir -p "$LYRICS_DIR"

# Mapa: número -> "término de búsqueda limpio"
declare -A QUERIES=(
  [03]="Chula Y Elegante reggaeton"
  [04]="DJ Plenna 2 Chamos Magia Y Deseo"
  [05]="Jorge Gonzalez Patra reggaeton"
  [06]="Nesty Dani J Solita"
  [08]="Deorro Voces Rancho Camaron Pelao"
  [10]="BB Thomaz Zum Zum"
  [13]="Yahaira Plasencia Cobarde bachata"
  [16]="Daddy Yankee BZRP Music Sessions 66"
  [18]="Dembow de Favela"
  [20]="Miley Cyrus Flowers"
  [21]="Shakira Zoo"
  [23]="Las Migas Stay Homas Buen Rollo"
  [24]="Machel Montano Wave It"
  [25]="Sofia Reyes Pedro Capo Casualidad"
  [26]="Reggi El Autentico Mujeron"
  [27]="Electro Merengue Celebrando"
  [31]="Salvi CHCKN Anxther Sun Kumbala"
  [32]="Sebastian Yatra Manuel Turizo Beele Vagabundo"
  [33]="India Martinez Andy Rivera 5 Sentios"
  [35]="Zona Prieta Chica Practica"
  [36]="Como E Salsa Choke"
  [37]="Gozadera cumbia larga"
  [38]="Que Vuelvas"
  [39]="Pal Party Dembow"
  [43]="Maria Becerra XROSS 7 Vidas"
)

found=0; miss=0

for num in $(echo "${!QUERIES[@]}" | tr ' ' '\n' | sort); do
  # Buscar el mp3 correspondiente
  mp3file=$(find "$SONGS_DIR" -maxdepth 1 -name "${num} - *.mp3" | head -1)
  if [[ -z "$mp3file" ]]; then
    echo "[skip] $num — no existe el mp3"
    continue
  fi

  stem="$(basename "$mp3file" .mp3)"
  out="$LYRICS_DIR/$stem.lrc"

  if [[ -s "$out" ]]; then
    echo "[skip] $num — ya tiene letra"
    found=$((found+1)); continue
  fi

  query="${QUERIES[$num]}"
  echo "[search] $num: '$query'"

  if syncedlyrics "$query" -o "$out" -p lrclib netease megalobiz 2>/dev/null && [[ -s "$out" ]]; then
    lines=$(wc -l <"$out")
    echo "  OK -> ($lines líneas)"
    found=$((found+1))
  else
    rm -f "$out"
    echo "  MISS"
    miss=$((miss+1))
  fi
done

echo ""
echo "Pase 2: $found encontradas | $miss sin letra"
