<?php
date_default_timezone_set('America/Sao_Paulo');
// Marca o início
$inicio = microtime(true);
echo "Início: " . date("Y-m-d H:i:s") . "\n";

function tempoParaSegundos(string $tempo): float {
    if (preg_match('/^(?P<h>\d{2}):(?P<m>\d{2}):(?P<s>\d{2}),(?P<ms>\d{3})$/', $tempo, $m)) {
        $h  = (int)$m['h'];
        $mm = (int)$m['m'];
        $ss = (int)$m['s'];
        $ms = (int)$m['ms'];
        return $h * 3600 + $mm * 60 + $ss + $ms / 1000;
		//echo "<br>fun: " . $h * 3600 + $mm * 60 + $ss + $ms / 1000;
    }
    throw new Exception("Formato de tempo inválido: $tempo");
}

function lerSubtitulos(string $arquivo): array {
    if (!file_exists($arquivo)) {
        die("Erro: $arquivo não encontrado.\n");
    }
    $conteudo = file_get_contents($arquivo);
    $tempos = [];
    $blocos = preg_split('/\n\s*\n/', $conteudo);

    foreach ($blocos as $bloco) {
        $bloco = trim($bloco);
        if ($bloco === '') continue;

        $linhas = array_filter(array_map('trim', preg_split('/\n/', $bloco)), function($l) { return $l !== ''; });
        $linhas = array_values($linhas);

        if (count($linhas) < 3) continue;

        $numero = $linhas[0];
        $tempo_line = $linhas[1];
        $texto = $linhas[2];
		
        if (preg_match('/^(\d{2}:\d{2}:\d{2},\d{3}) --> (\d{2}:\d{2}:\d{2},\d{3})$/', $tempo_line, $m)) {
            $seg_inicio = tempoParaSegundos($m[1])*30;
            $seg_fim    = tempoParaSegundos($m[2])*30;
				//$tt = tempoParaSegundos($m[1]);
            $enable = "enable='between(t,{$seg_inicio},{$seg_fim})'";
			
            $tempos[$numero] = [
                'seg_inicio' => $seg_inicio,
                'seg_fim'    => $seg_fim,
                'texto'      => $texto,
                //'res'     => $tt ,
                'enable'     => $enable,
            ];
        }
    }

    return $tempos;
}
$projeto = "proj_011"; // Defina seu projeto
extract($_GET);
// ========================================
// CRIAR 2447 SVGS
// ========================================
//http://localhost/videos/_t/teste_inserirLEGENDA.php
$o_svg = file_get_contents("http://localhost/videos/$projeto/svg_base.svg");
$tempos = lerSubtitulos("../$projeto/legenda_curta.srt");
$pasta_das_imagens = "../$projeto/imagens";
$pasta_saida_svgs_e_pngs = "../$projeto/svgs";

echo "$pasta_saida_svgs_e_pngs <hr>";
if (!is_dir($pasta_das_imagens)) {    echo "pasta não existe <hr>";}
//// contar imagens   ////
$filas = glob("$pasta_das_imagens/*.png");  $total_pngs = count($filas);
//echo "=== $pasta_saida_svgs_e_pngs ====== $total_pngs ===";

$indice = 1; // Primeiro subtítulo
$cont_svgs = 0;
echo "=== Criando $total_pngs SVGS to PNG ===\n\n";

//for ($zz=1;$zz<=54;$zz++) {
for ($an = 1; $an <= $total_pngs; $an++) {

//if ($an > 10) {  exit; }
    // Cada SVG = 0,5 segundos
    $tempo_atual = $an * 0.1;
	echo "[[ tempo Atual: $tempo_atual ]] // ";
    // Verificar se devemos mudar para o próximo subtítulo
    if ($indice <= count($tempos)) {
        $seg_inicio = $tempos[$indice]['seg_inicio'];
        $seg_fim = $tempos[$indice]['seg_fim'];
        
        // Se o tempo atual passou do seg_fim, mudar para próximo subtítulo
        if ($tempo_atual > $seg_fim && $indice < count($tempos)) {
            $indice++;
            $seg_inicio = $tempos[$indice]['seg_inicio'];
            $seg_fim = $tempos[$indice]['seg_fim'];
        }
    }
    
    // Pega o texto atual
    if ($indice <= count($tempos)) {
        $texto = $tempos[$indice]['texto'];
    } else {
        // Último texto repetido
        $texto = $tempos[count($tempos)]['texto'];
    }
    
    // Criar e salvar SVG
	if ($an<=9999) {$zeros ='0';}
	if ($an<=999) {$zeros ='00';}
	if ($an<=99) {$zeros ='000';}
	if ($an<=9) {$zeros ='0000';}
	 
    $novo_svg = str_replace('Legenda Base para x', $texto, $o_svg);
	$n_img = 'xframe' . "$zeros$an" . '.png';
    $novo_svg = str_replace('xframe00001.png', $n_img, $novo_svg);
	
    $nome_svg = "svg_" . "$zeros$an" . ".svg";
    $arquivo_saida = $pasta_saida_svgs_e_pngs . "/" . $nome_svg;
  // file_put_contents($arquivo_saida, $novo_svg);
  echo "<br>";
	echo $tempos[$an]['seg_inicio'] ; echo " :==== ";
	echo $tempos[$an]['texto'] ; echo ":<br>";
	
	//;;. "==> $indice <==  nome: $nome_svg   ==== $zeros   //// $n_img ||| $arquivo_saida";

	
// ========================================
// Usando o script  parte 1    CRIAR    P N G s
// ========================================
$inkscape = "E:/_ARQU_PROGRAMAS/Inkscape/bin/inkscape.exe";
$arq = 'saidaaaassssssssssssss' . $an . '.png';
$saida = "E:/xampp/htdocs/videos/proj_01sssssssssssssss1/pasta/$arq";
//$temp = "E:/xampp/htdocs/videos/proj_011/svgs/$arquivo_saida";
$comando = "$inkscape " . "\"$arquivo_saida\" " . "--export-type=png " . "--export-width=478 "  . "--export-height=850 " . "\"$saida\"";
//exec("$comando 2>&1", $out, $ret);
//echo "<pre>--xx $comando  --vvvv</pre>";
}
echo "<pre>";
echo $tempos[1]['seg_inicio'];
print_r($tempos);

// Marca o fim
$fim = microtime(true);
echo "<br>Fim: " . date("Y-m-d H:i:s") . "\n";
// Calcula a diferença
$tempo_execucao = $fim - $inicio;
echo "Tempo de execução: " . number_format($tempo_execucao, 4) . " segundos\n";

?>