| | |
| | | require_once(dirname(__FILE__).'/api_geonames.php'); |
| | | require_once(dirname(__FILE__).'/api_yrno.php'); |
| | | |
| | | class bot_pogoda_module extends BotModule { |
| | | class bot_pogoda_module implements BotModule { |
| | | function pogoda($msg, $params) { |
| | | $arg = trim($msg->args); |
| | | |
| | | $out = new BotMsg(); |
| | | |
| | | $loc = FALSE; |
| | | |
| | | if(empty($arg)) { |
| | | $msg->session->setClass('pogoda'); |
| | |
| | | catch(Exception $e) { |
| | | } |
| | | |
| | | $forced = FALSE; |
| | | if(empty($arg)) { |
| | | $arg = 'Warszawa'; |
| | | $forced = TRUE; |
| | | } |
| | | |
| | | $out->a('<p>Nie ustawiono miasta (pomoc - wpisz: help miasto) - '.(!$forced ? 'na podstawie danych z katalogu publicznego ' : '').'wybieram miasto '.$arg.'</p>'."\n\n"); |
| | | |
| | | $loc = new api_geonames(); |
| | | $loc = $loc->search($arg); |
| | | |
| | | if($loc === FALSE) { |
| | | return new BotMsg('Nie udało się pobrać danych o podanym miejscu - spróbuj ponownie za około 10 minut.'); |
| | | } |
| | | elseif($loc === NULL) { |
| | | return new BotMsg('Dla podanego miejsca nie udało się uzyskać współrzędnych geograficznych - spróbuj wpisać inną nazwę.'); |
| | | } |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | if($loc === FALSE) { |
| | | $loc = new api_geonames(); |
| | | $loc = $loc->search($arg); |
| | | |
| | | if($loc === FALSE) { |
| | | return new BotMsg('Nie udało się pobrać danych o podanym miejscu - spróbuj ponownie za około 10 minut.'); |
| | | } |
| | | elseif($loc === NULL) { |
| | | return new BotMsg('Dla podanego miejsca nie udało się uzyskać współrzędnych geograficznych - spróbuj wpisać inną nazwę.'); |
| | | } |
| | | } |
| | | |
| | | $api = yrno_weather($loc['lat'], $loc['lng']); |
| | | if($api == FALSE) { |
| | | return new BotMsg('Nie udało się pobrać danych o pogodzie - spróbuj ponownie za około 10 minut.'); |
| | | } |
| | | |
| | | $out->a('<p>Pogoda dla '.htmlspecialchars($loc->name).', '.htmlspecialchars($loc->countryName).'.</p>'."\n\n"); |
| | | $out->a('<p>Pogoda dla '.htmlspecialchars($loc['name']).', '.htmlspecialchars($loc['countryName']).'.</p>'."\n\n"); |
| | | |
| | | $icon = $api->symbols[$api->getCurrentIcon()]; |
| | | $icon = (int)$api->getCurrentIcon(); |
| | | $weather = $api->getCurrentWeather(); |
| | | |
| | | $out->a('<p><b>Teraz</b><br />'."\n" |
| | | . $icon.'<br />'."\n" |
| | | . '<img src="./data/pogoda/'.$icon.'.png" /><br />'."\n" |
| | | . api_yrno_parse::$symbols[$icon].'<br />'."\n" |
| | | . 'Temp.: '.htmlspecialchars($weather['temp']).'°C<br />'."\n" |
| | | . 'Wiatr: '.htmlspecialchars($weather['wind']).' km/h, '.$api->wind($weather['wind']).'<br />'."\n" |
| | | . 'Wiatr: '.htmlspecialchars($weather['wind_speed']).' km/h, '.api_yrno_parse::wind($weather['wind_dir']).'<br />'."\n" |
| | | . 'Ciśnienie: '.htmlspecialchars($weather['pressure']).' hPa</p>'."\n\n"); |
| | | |
| | | $when = time(); |
| | |
| | | return $out; |
| | | } |
| | | |
| | | function getHTMLforRange($data) { |
| | | return htmlspecialchars($data['from'].($data['from'] != $data['to'] ? '-'.$data['to'] : '')); |
| | | } |
| | | |
| | | function getHTMLforWeather($name, $icons, $weather) { |
| | | $html = '<p><b>'.$name.'</b><br />'."\n"; |
| | | $desc = array(); |
| | | $curr = 0; |
| | | foreach($icons as $icon) { |
| | | if(is_file('./data/pogoda/'.htmlspecialchars($icon).'.png')) { |
| | | $html .= '<img src="./data/pogoda/'.htmlspecialchars($icon).'.png" alt="" /> '; |
| | | $icon = (int)$icon; |
| | | if(is_file('./data/pogoda/'.$icon.'.png')) { |
| | | $html .= '<img src="./data/pogoda/'.$icon.'.png" alt="" /> '; |
| | | if($icon != $curr) { |
| | | $desc[] = api_yrno_parse::$symbols[$icon]; |
| | | $curr = $icon; |
| | | } |
| | | } |
| | | } |
| | | $html .= '<br />'."\n" |
| | | . 'Temp.: '.$weather['temp']['from'].($weather['temp']['from'] != $weather['temp']['to'] ? '-'.$weather['temp']['to'] : '').'°C<br />'."\n" |
| | | . 'Wiatr: '.$weather['wind']['from'].($weather['wind']['from'] != $weather['wind']['to'] ? '-'.$weather['wind']['to'] : '').' km/h</p>'."\n\n"; |
| | | . implode(' / ', $desc).'<br />'."\n" |
| | | . 'Temp.: '.$this->getHTMLforRange($weather['temp']['day']).'°C (w nocy: '.$this->getHTMLforRange($weather['temp']['night']).'°C)<br />'."\n" |
| | | . 'Wiatr: '.$this->getHTMLforRange($weather['wind']['day']).' km/h (w nocy: '.$this->getHTMLforRange($weather['wind']['night']).' km/h)</p>'."\n\n"; |
| | | |
| | | return $html; |
| | | } |