<?php
/**
 * /v6/api/adapter_fixed.php
 *
 * Agit comme un wrapper autour de /v6/api/adapter.php :
 * - enlève le "now playing" de l'historique
 * - supprime les doublons (même titre+artiste)
 * - injecte les paroles locales si présentes (et active lyrics_available)
 */

header('Content-Type: application/json; charset=utf-8');

// 1) Exécuter l'adapter actuel et récupérer le JSON
ob_start();
require __DIR__ . '/adapter.php';
$raw = ob_get_clean();

if (!$raw) {
  echo json_encode(['ok' => false, 'reason' => 'empty_adapter_output']);
  exit;
}

$data = json_decode($raw, true);
if (!is_array($data)) {
  // Si pour une raison X l'adapter renvoie déjà du JSON texte, on repasse tel quel
  echo $raw;
  exit;
}

// 2) Normaliser le "now playing"
$nowTitle  = $data['song']   ?? ($data['title']  ?? '');
$nowArtist = $data['artist'] ?? '';

// 3) Nettoyage de l'historique : pas de "now playing" + pas de doublons
$history = is_array($data['history'] ?? null) ? $data['history'] : [];

$norm = function($title, $artist) {
  $s = $title . '//' . $artist;
  $s = iconv('UTF-8', 'ASCII//TRANSLIT', $s);
  $s = strtolower($s);
  $s = preg_replace('/[^a-z0-9]+/','-', $s);
  return trim($s, '-');
};

$nowKey = $norm($nowTitle, $nowArtist);
$seen   = [];
$clean  = [];

foreach ($history as $h) {
  $t = $h['title']  ?? ($h['song'] ?? '');
  $a = $h['artist'] ?? '';
  if ($t === '' && $a === '') continue;

  $k = $norm($t, $a);

  // Exclure le morceau en cours
  if ($k === $nowKey) continue;

  // Anti-doublon
  if (isset($seen[$k])) continue;
  $seen[$k] = 1;

  $clean[] = $h;
}

$data['history'] = $clean;

// 4) Lyrics locales : /v6/data/lyrics/artist-title.txt
$slug = function($s) {
  $s = iconv('UTF-8', 'ASCII//TRANSLIT', $s);
  $s = strtolower($s);
  $s = preg_replace('/[^a-z0-9]+/','-', $s);
  return trim($s, '-');
};

$lyricsDir = realpath(__DIR__ . '/../data/lyrics');
if ($lyricsDir === false) {
  $lyricsDir = __DIR__ . '/../data/lyrics';
  if (!is_dir($lyricsDir)) {
    @mkdir($lyricsDir, 0755, true);
  }
}

$lyricsFile = rtrim($lyricsDir, '/').'/'.$slug($nowArtist).'-'.$slug($nowTitle).'.txt';
if (is_file($lyricsFile)) {
  $text = @file_get_contents($lyricsFile);
  if (is_string($text) && $text !== '') {
    $data['lyrics'] = $text;
    $data['lyrics_available'] = true;
  } else {
    $data['lyrics_available'] = false;
  }
} else {
  // S'il n'y a pas de fichier local, indique au front que c'est indisponible
  $data['lyrics_available'] = false;
  // On laisse le champ 'lyrics' tel qu'il est (probablement "")
}

// 5) Réponse finale
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
