Yweather, Previsão do Tempo para Kohanaphp
Postado | Postado em Kohana, PHP, php-al | Data 27-10-2009
Estava precisando da previsão do tempo de várias cidades aqui de Alagoas, sai pesquisando na internet e encontrei um monte de dicas onde a galera consumia alguns Webservices, ou até via expressões regulares faziam a leitura do conteúdo de uma página para obter essas informações. Mas, infelizmente essas soluções não serviam pois muitas das cidades que eu precisava de informações não constavam nesses Webservices ou páginas.
Foi então que eu cai na página das APIs do Yahoo, e depois de verificar se ela me daria todas as informações desejadas, tratei logo de criar uma library pra o Kohanaphp, que nada mais é do q um tratamento simplificado do retorno XML que a API faz.
Incialmente essa library foi desenvolvida pra o Kohana, mas nada impede de usá-la independente do Framework.
Para ultilizá-la é muito simples, basta descompactar o arquivo yweather.php dentro da sua pasta de libraries, geralmente application/libraries e escrever no seu controller ou model:
$weather = Yweather::get('BRXX0143');
Onde BRXX0143 é o código de Maceió-AL, e você pode conseguir o código de outra cidade na página do Yahoo ( http://weather.yahoo.com ).
Por exemplo: Para cidade de São Paulo, o link é http://weather.yahoo.com/Sao-Paulo-Brazil/BRXX0232/forecast.html, logo sabemos q seu código é BRXX0232
É tbm possivel informar a unidade de medida de temperatura desejada, por padrão os dados são informados em Celsisus, que é o padrão brasileiro, porém se você desejar, pode obte-las em Fahrenheit, pra isso basta:
$weather = Yweather::get('BRXX0143', 'f');
Após a execução desse método, vc tem um array com uma pancada de informações interessantes, que vão desde a humidade do ar, até velocidade do vento e a previsão do dia posterior, usando o var_dump por exemplo vc pode saber que informações estão disponíveis:
$weather = Yweather::get('BRXX0143');
var_dump($weather);
E o resultado disso e algo parecido com:
array(6) {
["location"]=>
array(3) {
["city"]=>
string(6) "Maceio"
["region"]=>
string(0) ""
["country"]=>
string(2) "BR"
}
["units"]=>
array(4) {
["temperature"]=>
string(1) "C"
["distance"]=>
string(2) "km"
["pressure"]=>
string(2) "mb"
["speed"]=>
string(3) "kph"
}
["wind"]=>
array(3) {
["chill"]=>
string(2) "31"
["direction"]=>
string(2) "50"
["speed"]=>
string(5) "20.92"
}
["atmosphere"]=>
array(4) {
["humidity"]=>
string(2) "52"
["visibility"]=>
string(4) "9.99"
["pressure"]=>
string(6) "982.05"
["rising"]=>
string(1) "0"
}
["astronomy"]=>
array(2) {
["sunrise"]=>
string(7) "5:54 am"
["sunset"]=>
string(7) "6:19 pm"
}
["conditions"]=>
array(3) {
["now"]=>
array(8) {
["text"]=>
string(13) "Partly Cloudy"
["code"]=>
string(2) "30"
["temp"]=>
string(2) "31"
["date"]=>
string(29) "Tue, 27 Oct 2009 12:00 pm LST"
["description"]=>
string(481) "...."
["description_image"]=>
string(37) "http://l.yimg.com/a/i/us/we/52/30.gif"
["small_image"]=>
string(47) "http://l.yimg.com/a/i/us/nws/weather/gr/30s.png"
["big_image"]=>
string(47) "http://l.yimg.com/a/i/us/nws/weather/gr/30d.png"
}
["today"]=>
array(8) {
["day"]=>
string(3) "Tue"
["date"]=>
string(11) "27 Oct 2009"
["low"]=>
string(2) "21"
["high"]=>
string(2) "30"
["text"]=>
string(13) "Mostly Cloudy"
["code"]=>
string(2) "28"
["small_image"]=>
string(47) "http://l.yimg.com/a/i/us/nws/weather/gr/28s.png"
["big_image"]=>
string(47) "http://l.yimg.com/a/i/us/nws/weather/gr/28d.png"
}
["tomorrow"]=>
array(8) {
["day"]=>
string(3) "Wed"
["date"]=>
string(11) "28 Oct 2009"
["low"]=>
string(2) "21"
["high"]=>
string(2) "31"
["text"]=>
string(13) "Partly Cloudy"
["code"]=>
string(2) "30"
["small_image"]=>
string(47) "http://l.yimg.com/a/i/us/nws/weather/gr/30s.png"
["big_image"]=>
string(47) "http://l.yimg.com/a/i/us/nws/weather/gr/30d.png"
}
}
}
Enfim, vai facilitar um bocado minha vida, quando eu precisar da previsão do tempo, e claro está disponível pra download, caso você tbm queria ultilizar.
http://beto.euqueroserummacaco.com/tools/kohanaphp/libraries/yweather-0.1.rar
Qualquer coisa …. passa o fio
[]´s
UPDATE:
Para facilitar minha vida, decidi incorporar mais de um serviço dentro de uma única biblioteca, essa funcção e uma delas, então se vc deseja ver esse biblioteca por favor acesse-a no gitorious ( http://gitorious.com/kbase/kbase/blobs/master/application/libraries/service.php )


Pow, legal…
Só fiquei curioso pra saber como é que faz uma library pra um framework…
Faz um post com isso macaco!
Olá,
tem como usar esse Weather em português ?
obrigado e espero resposta
o yahoo retorna todas as informações em ingles, mas cada condição de tempo tem um codigo, vc pode se basear nele pra descrever em pt_BR ou qualquer outro idioma.
http://developer.yahoo.com/weather/ pode te ajudar
@marco, putz mo tempao q eu deveria ter respondido e isso ficou meio de lado né? uhauhauh .
P fazer uma library pro kohana é simples, aqui explica direitinho
http://docs.kohanaphp.com/general/libraries#adding_your_own_libraries