Location: PHPKode > scripts > Subtitle timestamp adjust > subtitle-timestamp-adjust/xzysubtitletsadj.php
<?php

/*
esta clase sirve para crear un archivo de subtitulo en base a otro, especificamente cuando la pelicula haya fraccionada.
en el caso concreto que el reproductor sea vlc y el archivo original este codificado en latin-1 (iso 8859-1), se convierte en utf para una correcta reproduccion.
solo se manipula este formato.

this class helps to make subtitle files from another one, specifically when the movie was splitted.
If media player is vlc and the original file encoded in latin-1(iso 8859-1), it converts to utf for right displaying.
Only manage this format.

by luis martinez ulloa hide@address.com
*/



class xzy_movietsadj {
	
	var $subtitulos;
	var $tsajuste; //guarda el timestamp a desplazar
	
	function string2ts($timestamp) {
		list($hh,$mm,$ss) = split(':',$timestamp);
		$ss = str_replace(',','.',$ss);
		return ((int) $hh * 3600) + ((int) $mm * 60) + (float) $ss;
	}
	
	function ts2string($ts) {
		$seg = intval($ts);
		$dec = intval(0.5 +1000 * ($ts - $seg));
		$horas = intval($seg / 3600);
		$segres = $seg % 3600;
		$mins = intval($segres / 60);
		$segs = $segres % 60;
		return sprintf('%02u:%02u:%02u,%03u',$horas,$mins,$segs,$dec);
	}
	
	function loadst($ruta) {
		$sepst = "\r\n\r\n"; //separador entre parrafos
		$sepln = "\r\n"; //separacion entre lineas
		$seplap = ' --> '; //separacion en el lapso
		$archivo = file_get_contents($ruta);
		$archivo = utf8_encode($archivo); // *
		$temp1 = split($sepst,$archivo);
		$entradas = sizeof($temp1);
		foreach($temp1 as $tit) {
			$temp2 = split($sepln,$tit);
			$partes = sizeof($temp2);
			if ($partes > 1) {
				$temp3['num'] = $temp2[0];
				$lapso = $temp2[1];
				list($sstart,$sstop) = split($seplap,$lapso);
				$temp3['start'] = $this->string2ts($sstart);
				$temp3['stop'] = $this->string2ts($sstop);
				$texto = '';
				for($cont = 2; $cont < $partes; $cont++) {
					$texto .= $temp2[$cont] . $sepln;
				}
				$temp3['texto'] = $texto;
				$temp4[] = $temp3;
			}
		}
		$this->subtitulos = $temp4;
	}
	
	function savest($ruta) {
		$sepln = "\r\n";
		$seplap = ' --> ';
		$temp1 = '';
		foreach($this->subtitulos as $tit) {
			$start = $tit['start'] - $this->tsajuste;
			if ($start > 0) {
				$stop = $tit['stop'] - $this->tsajuste;
				$sstart = $this->ts2string($start);
				$sstop = $this->ts2string($stop);
				$temp1 .= $tit['num'] . $sepln;
				$temp1 .= $sstart . $seplap . $sstop . $sepln;
				$temp1 .= $tit['texto'] . $sepln;
			}
			file_put_contents($ruta,$temp1);
		}
	}
}

?>
Return current item: Subtitle timestamp adjust