Nekdy se muze hodit znat aktualni teplotu v urcitem meste. Nektera mesta, jako treba Jicin maji vlastni webovy teplomer. Na webu obechnanice.cz jsem se dozvedel o skvele sluzbe Foreca.cz. Problem je, ze krome aktualni teploty (tu potrebuju) vidim i spoustu dalsich udaju. Nastesti jde teplota ze stranky jednoduse vytahnout. 🙂
Na strance je spousta zbytecnych udaju
Napsal jsem jednoduchy skript v bashi, ktery stahne stranku a vypise teplotu. Soubor zjistit-teplotu:
123456789 #!/bin/bashSTAT=$1MESTO=$2echo $STATecho $MESTOwget -q -O - http://www.foreca.cz/$STAT/$MESTO | \grep '<span class="warm txt-xxlarge"><strong>' | \sed -e 's/<[^>]*>//g' | \sed 's/\s*//'
Pouziti je nasledujici: ./zjistit-teplotu „Czech_Republic“ „Jicin“
umisteni se pise bez carek a hacku.
Uzivatele Linuxu muzou skript normalne spustit. Uzivatele Windows musi mit programy sed, wget a grep – melo by stacit nainstalovat si cygwin.
Zajima-li vas jak, jsem k tomu dosel, zobrazte si zdojovy kod stranky s teplotou:
a tam to najdete 🙂
Webove rozhrani pro ziskani teploty
Pouziti z prikazoveho radku je pekne, ale uzivatelsky prijemnejsi je pouzit jednoduche webove rozhrani.
Vzhled muze byt libovolny:
Soubor index.php:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 <?php$stavZpracovani = $_REQUEST["zadanoMisto"];$stat = $_REQUEST["stat"];$mesto = $_REQUEST["mesto"];?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"><head><meta http-equiv="content-language" content="cs" /><meta name="language" content="cs" /><meta http-equiv="cache-control" content="no-cache" /><meta http-equiv="pragma" content="no-cache" /><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>Aktualni teplota <?php if ($_REQUEST["zadanoMisto"] == "ano") {echo "v $stat $mesto";}?></title><style type="text/css">.ramecek {margin: 1em;}</style></head><body><div id="teplota"><?phpif ($stavZpracovani == "ano") {$spustit = "./zjistit-teplotu"." ".$stat." ".$mesto;echo exec ($spustit);}?></div><div id="zadat" style="<?php if ($_REQUEST["zadanoMisto"] == "ano") {echo "display: none;";}?>"><h1>Aktualni teplota z <a href="http://www.foreca.cz">FORECA.CZ</a></h1><div><fieldset><legend>Zjistit teplotu v:</legend><form method="get" action="<?php echo ($_SERVER["PHP_SELF"]);?>"><p><label class="povinne">Stát<inputtype="text"name="stat"value="Czech_Republic" /></label><label class="povinne">Město<inputtype="text"name="mesto"value="Jicin" /></label><inputtype="hidden"name="zadanoMisto"value="ano" /><input type="submit" value="Zjistit teplotu" /></p></form><div class="ramecek"><p>Zadejte udaje stejne jako na ukazce:</p><img src="foreca.png" alt="Ukazka vstupu" width="338" height="117" /></div></fieldset></div></div></body></html>
pro vyse uvedeny soubor je potreba zakazat cache, sice v nem jsou uvedene meta tagy, ale chcete-li mit jeste vetsi jistotu, pouzijte soubor .htaccess (pro webserver Apache):
1 2 3 4 5 6 7 8 9 |
<Files ~ "\.(php)$">     FileETag None     <IfModule mod_headers.c>         Header unset ETag         Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"         Header set Pragma "no-cache"         Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"     </IfModule> </Files> |
Cely kod je vicemene jasny. Do poli stat a mesto se zadava stejna hodnota jako je v adresa na foreca.cz:
Je take mozne pouzit tento formular, nebo zjistit teplotu primym zadanim odkazu:
http://localhost/index.php?stat=Czech_Republic&mesto=Jicin&zadanoMisto=ano
Dulezita je cast s promennymi. Stat a mesto jsou jasne, jestlize je v promenne zadanoMisto hodnota ano, nevykresli se rozhranni pro zadani umisteni – formulari se priradi CSS display: none. Je tak mozne pomoci iframe (nebo treba php include) vlozit teplotu na sve vlastni stranky.
Vlozeni do stranky muze vypadat nasledovne:
12 <iframe src="http://example.net/pocasi/index.php?stat=Czech_Republic&mesto=Jicin&zadanoMisto=ano" width="20" height="20"></iframe>
Cely kod si muzete stahnout v zip [14kB].
Navod slouzi pouze jako ukazka. Chcte-li takto zjistovat teplotu, meli byste se dohodnout s foreca.cz
Po nejake dobe muze Foreca.cz zmenit kod svych stranek a pak to nemusi fungovat.
Testovano 22. cervence 2011