args); $out = new BotMsg(); if(empty($arg)) { $msg->session->setClass('pogoda'); if(isset($msg->session->miasto) && !isset($msg->session->geo)) { if(strlen($msg->session->miasto) > 0) { $out->a('
Wymagane przekonwertowanie danych... Wywoływanie komendy miasto '.htmlspecialchars($msg->session->miasto).'...
'); $out->a($this->miasto($msg, $msg->session->miasto)); $out->a(''); } else { unset($msg->session->miasto); } } if(!isset($msg->session->miasto)) { try { $api = new BotAPIGG(); $data = $api->getPublicData($msg->user); if(is_array($data) && isset($data['city'])) { $arg = trim($data['city']); } unset($data, $api); } catch(Exception $e) { } if(empty($arg)) { $arg = 'Warszawa'; $forced = TRUE; } $out->a('Nie ustawiono miasta (pomoc - wpisz: help miasto) - '.(!$forced ? 'na podstawie danych z katalogu publicznego ' : '').'wybieram miasto '.$arg.'
'."\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 { $loc = array( 'name' => $msg->session->miasto, 'countryName' => $msg->session->kraj, 'coutryCode' => $msg->session->cc, 'lat' => $msg->session->geo['lat'], 'lng' => $msg->session->geo['lon'] ); } } $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('Pogoda dla '.htmlspecialchars($loc['name']).', '.htmlspecialchars($loc['countryName']).'.
'."\n\n"); $icon = (int)$api->getCurrentIcon(); $weather = $api->getCurrentWeather(); $out->a('Teraz
'."\n"
. '
'."\n"
. api_yrno_parse::$symbols[$icon].'
'."\n"
. 'Temp.: '.htmlspecialchars($weather['temp']).'°C
'."\n"
. 'Wiatr: '.htmlspecialchars($weather['wind_speed']).' km/h, '.api_yrno_parse::wind($weather['wind_dir']).'
'."\n"
. 'Ciśnienie: '.htmlspecialchars($weather['pressure']).' hPa
Dane lokalizacyjne pochodzą z serwisu GeoNames.
'."\n"
. 'Dane pogodowe pochodzą z Norweskiego Instytutu Meteorologicznego.
'.$name.'
'."\n";
$desc = array();
$curr = 0;
foreach($icons as $icon) {
$icon = (int)$icon;
if(is_file('./data/pogoda/'.$icon.'.png')) {
$html .= ' ';
if($icon != $curr) {
$desc[] = api_yrno_parse::$symbols[$icon];
$curr = $icon;
}
}
}
$html .= '
'."\n"
. implode(' / ', $desc).'
'."\n"
. 'Temp.: '.$this->getHTMLforRange($weather['temp']['day']).'°C (w nocy: '.$this->getHTMLforRange($weather['temp']['night']).'°C)
'."\n"
. 'Wiatr: '.$this->getHTMLforRange($weather['wind']['day']).' km/h (w nocy: '.$this->getHTMLforRange($weather['wind']['night']).' km/h)
Na podstawie danych z katalogu publicznego wybieram miasto: '.htmlspecialchars($arg).'
'."\n\n"); } else { $out = new BotMsg(); } $api = new api_geonames(); $dane = $api->search($arg); if($dane === FALSE) { return new BotMsg('Wystąpił błąd przy wyszukiwaniu miasta. Spróbuj ponownie później.'); } elseif($dane === NULL) { return new BotMsg('Nie udało się zlokalizować podanego miejsca. Spróbuj wpisać inną nazwę.'); } $msg->session->miasto = $dane['name']; $msg->session->kraj = $dane['countryName']; $msg->session->cc = $dane['countryCode']; $msg->session->geo = array('lat' => $dane['lat'], 'lon' => $dane['lng']); $out->a('Ustawiono miejsce: '.htmlspecialchars($this->session->miasto).', '.htmlspecialchars($this->session->countryName).'
'); return $out; } } ?>