<?php
/*
 * generar_videos.php
 * ─────────────────────────────────────────────────────────────
 * Regenera videos.js a partir dels fitxers presents a videos/.
 * Crida'l des d'una URL (p. ex. https://.../generar_videos.php)
 * per actualitzar la llista després de pujar nous vídeos.
 *
 *   ?format=json   → torna la llista com a JSON en lloc d'escriure videos.js
 *   ?dry=1         → mostra la llista però NO escriu el fitxer
 * ─────────────────────────────────────────────────────────────
 */

header('Content-Type: text/plain; charset=utf-8');

$dir       = __DIR__ . DIRECTORY_SEPARATOR . 'videos';
$outFile   = __DIR__ . DIRECTORY_SEPARATOR . 'videos.js';
$exts      = ['mp4', 'webm', 'mov', 'm4v', 'ogv'];
$dryRun    = isset($_GET['dry'])    && $_GET['dry']    !== '0';
$asJson    = isset($_GET['format']) && $_GET['format'] === 'json';

if (!is_dir($dir)) {
    http_response_code(500);
    echo "Error: no existeix la carpeta 'videos/' a " . $dir;
    exit;
}

$videos = [];
foreach (scandir($dir) as $f) {
    if ($f === '.' || $f === '..') continue;
    $full = $dir . DIRECTORY_SEPARATOR . $f;
    if (!is_file($full)) continue;
    $ext = strtolower(pathinfo($f, PATHINFO_EXTENSION));
    if (!in_array($ext, $exts, true)) continue;
    $videos[] = $f;
}

// Ordre: per lletra inicial (a-z), després alfabètic insensible a majúscules
usort($videos, function ($a, $b) {
    $ca = strtolower(substr($a, 0, 1));
    $cb = strtolower(substr($b, 0, 1));
    if ($ca !== $cb) return strcmp($ca, $cb);
    return strcasecmp($a, $b);
});

if ($asJson) {
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode([
        'count'  => count($videos),
        'videos' => $videos,
    ], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
    exit;
}

// Construir el contingut de videos.js
$lines = [];
$lines[] = '// ─────────────────────────────────────────────────────────────';
$lines[] = '//  videos.js  —  Manifest de vídeos de l\'orla digital';
$lines[] = '//  Generat automàticament per generar_videos.php — NO editar.';
$lines[] = '//  Generat el ' . date('Y-m-d H:i:s');
$lines[] = '// ─────────────────────────────────────────────────────────────';
$lines[] = 'const VIDEOS_LIST = [';

$n = count($videos);
foreach ($videos as $i => $v) {
    $escaped = str_replace(['\\', '"'], ['\\\\', '\\"'], $v);
    $coma    = ($i < $n - 1) ? ',' : '';
    $lines[] = '  "' . $escaped . '"' . $coma;
}
$lines[] = '];';
$content = implode("\n", $lines) . "\n";

if ($dryRun) {
    echo "[DRY RUN] No s'ha escrit res. " . $n . " vídeos trobats:\n\n";
    echo $content;
    exit;
}

$ok = file_put_contents($outFile, $content);
if ($ok === false) {
    http_response_code(500);
    echo "Error: no s'ha pogut escriure " . $outFile . " (permisos?)";
    exit;
}

echo "OK — videos.js regenerat amb " . $n . " vídeos.\n";
echo "Fitxer: " . $outFile . "\n";
echo "Bytes escrits: " . $ok . "\n";
