<?php
/**************************************************
 *                 Pogoda z WP.pl                 *
 **************************************************
 * Wersja: 4.0                                    *
 * Autor: Jacek Kowalski (http://jacekk.info)     *
 *                                                *
 * Strona WWW: http://jacekk.info/scripts/weather *
 *                                                *
 * Utwór rozprowadzany na licencji                *
 * http://creativecommons.org/licenses/by-nc/2.5/ *
 **************************************************/

/* Kodowanie znaków ISO-8859-2 */

// Zmień 1201286 na kod swojego miasta
$url = 'http://pogoda.wp.pl/miasto,,mid,1201286,mi.html';

// Ścieżka do cache'a
$cache = dirname(__FILE__).'/pogoda_cache.txt';
// Dane aktualne?
$recent = TRUE;

// Sprawdzenie możliwości zapisania pogody
if( ( !file_exists($cache) AND !is_writable(dirname($cache)) )
	OR ( file_exists($cache) AND !(is_writable($cache)) ) ) {
	$cache = '';
}
// Dane są aktualne?
elseif( @filemtime($cache) < strtotime('-3 hours') ) {
	$recent = FALSE;
}

// Nie istnieje możliwość zapisania informacji lub dane są nieaktualne
if($cache == '' OR !$recent) {
	// Pobieramy pogodę
	$wynik = file_get_contents($url, 0, stream_context_create(array(
		'http' => array(
			'header' => 'Referrer: http://pogoda.wp.pl',
			'user_agent' => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)',
		)
	)));
	
	// Można zapisać do cache'a
	if($cache != '') {
		// Zapamiętujemy dane
		file_put_contents($cache, $wynik);
	}
}
else
{
	// Ładujemy zapisane dane
	$wynik = file_get_contents($cache);
}

// Wycięcie kawałka, potrzebne zamiany
$start = strpos($wynik, '<div class="hdMain"');
$stop = strpos($wynik, '<br class="b5"/>', $start);
$wynik = substr($wynik, $start, $stop-$start);
$wynik = str_replace('<strong style="padding-left: 2px;">', '<strong>', $wynik);

// Wyciąganie danych
$dzien = trim(strip_tags(substr($wynik, 0, strpos($wynik, '</div>'))));
$szukaj = array(
	'<strong>' => array(
		'</strong>',
		'miasto',
		'temp_max',
		'temp_min',
		'wiatr_szybkosc',
		'wiatr_chlodzenie',
		'wschod',
		'zachod',
	),
	'<div class="chmurka">' => array(
		'</div>',
		'obrazek',
	),
	'<div class="opis">' => array(
		'</div>',
		'opis',
	),
	'.gif" alt="' => array(
		'"',
		'spacja',
		'wiatr_kierunek',
	),
);

$dane = array();

foreach($szukaj as $patt => $info) {
	$stop = 0;
	$len = strlen($patt);
	for($i=0; $i < count($info)-1; $i++) {
		$start = strpos($wynik, $patt, $stop)+$len;
		$stop = strpos($wynik, $info[0], $start);
		$dane[ $info[$i+1] ] = trim(substr($wynik, $start, $stop-$start));
	}
}

if($dane['temp_min'] == $dane['temp_max']) {
	$dane['temp'] = $dane['temp_min'];
}
else
{
	$dane['temp'] = 'od '.$dane['temp_min'].' do '.$dane['temp_max'];
}

// Pokazanie w nowej formie
echo '<html>
<head>
<base href="http://pogoda.wp.pl">
<style type="text/css">
body {
	font-family: Verdana, sans-serif;
	font-size: 10px;
}
h1 {
	font-size: 14px;
	font-weight: bold;
}
.sub {
	font-size: 13px;
}
</style>
</head>
<body>
<h1>'.$dzien.'. Pogoda dla miejscowości '.strip_tags($dane['miasto']).'</h1>
<p>'.$dane['obrazek'].'</p>

<p><b>Temperatura:</b> '.$dane['temp'].'</p>

<p><b>Kierunek wiatru:</b> '.$dane['wiatr_kierunek'].'<br/>
<b>Szybkość wiatru:</b> '.$dane['wiatr_szybkosc'].'<br/>
<b>Czynnik chłodzący:</b> '.$dane['wiatr_chlodzenie'].'</p>

<p><b>Wschód słońca:</b> '.$dane['wschod'].'<br/>
<b>Zachód słońca:</b> '.$dane['zachod'].'</p>
<hr/>
&copy; by <a href="http://jacekk.info">Jacek Kowalski</a>
</body>
</html>';
?>
