Czas i program TV

0

Witam,
Napisałem skrypt który kradnie z WP program TV i wrzuca go do mojej bazy. Wykonuje się prawie 15 min i kradnie program dla wszystkich stacji. Jest to praca na szkolny konkurs, więc raczej mnie nie pozwą :D Problem w tym że WP, a właściwie firma A+C któa przygotowuje dla nich program, miesza z godzinami. Pewnie wiecie o co mi chodzi. Program emitowany we wtorek o godzinie 2:30 jest wyświetlany w poniedziałkowej tabelce, też o 2:30. Nie wiem jak sobie z tym poradzić :( Taki program dodawany jest do bazy, a następnie wyświetlany, w poniedziałek o godzinę 2:30, czyli przed wszystkimi programami na wtorek. Jak to naprawić?

Kod skryptu kradnącego:

<?php
include('./mysql.php');
include('./simple_html_dom.php');

$html = file_get_html('http://tv.wp.pl/');
$i = 0;
foreach($html->find('select#stationId option') as $e) {
	if($e->id && substr($e->id, 0, 1) == 'B') {
		$stacje[$i]['nr'] = $e->value;
		$stacje[$i]['kod'] = $e->id;
		$stacje[$i]['nazwa'] = iconv('ISO-8859-2', 'UTF-8', $e->innertext);
		
		$i++;
	}
}

for($i = 0; $i <= 7; $i++) {
	$dni[] = date('Y-m-d', time()+(86400*$i));
}

echo 'TRUNCATE TABLE programy;<br />'.PHP_EOL;
mysql_query('TRUNCATE TABLE programy');

foreach($stacje as $i => $stacja) {
	foreach($dni as $j => $dzien) {
		if($html = file_get_html('http://tv.wp.pl/program.html?name='.$stacja['kod'].'&stid='.$stacja['nr'].'&date='.$dzien.'&time=')) {
			foreach($html->find('div.program') as $e) {
				$html2 = str_get_html($e->innertext);
				$godzina = $html2->find('div.programL strong', 0);
				$godzina_text = iconv('ISO-8859-2', 'UTF-8', $godzina->innertext);
				$program = $html2->find('div.programR h4 a', 0);
				$program_text = iconv('ISO-8859-2', 'UTF-8', $program->innertext);
				
				echo 'INSERT INTO programy (id, dzien, godzina, stacja, program) VALUES (NULL, \''.$dzien.'\', \''.$godzina_text.'\', \''.$stacja['nazwa'].'\', \''.$program_text.'\');<br />'.PHP_EOL;
				mysql_query('INSERT INTO programy (id, dzien, godzina, stacja, program) VALUES (NULL, \''.$dzien.'\', \''.$godzina_text.'\', \''.$stacja['nazwa'].'\', \''.$program_text.'\')');
			}
		}
	}
}
?>

edit:
Includeowane pliki:
mysql.php - połączenie z serwerem MySQL, wybranie bazy i ustawienie kodowania;
simple_html_dom.php - klasa o tej samej nazwie, służy do wyciągania elementów z kodu html, coś jak JSowe getElementById.

0

Traktuj 2:30 w poniedziałkowym rozkładzie jako 26:30; arytmetyka czasu w php powinna dać sobie z tym radę.

No i dostajesz te strongi i a w kolejności w jakiej występują na stronie więc jeśli $godzina->innertext skonwertowana do czasu php jest mniejsza niż poprzednio odczytana (w poprzednim cyklu) to dodajesz do tego 24 godziny. Proste, nie?

Edit: I nie powielaj tak tych zapytań mysql, jedna zmienna może zostać i wypisana i przekazana do mysql. I mniej błędów się robi i wygląda lepiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1