Hoje vou mostrar pra vocês como é incrivelmente simples mostrar uma previsão do tempo no seu site usando a API de Previsão do Tempo do Google (Google Weather API).
Diferente da API de previsão do tempo do Yahoo, na do Google você identifica a cidade pelo o seu nome, não por um código alfa-numérico, o que deixa o serviço bem mais fácil e customizável… Você pode, por exemplo, mostrar a previsão do tempo da cidade que o visitante informou na hora do cadastro, é muito bom.
Outra diferença primordial entre as duas APIs é que a do Yahoo retorna apenas a previsão do tempo do dia, e a do Google retorna a previsão do tempo do dia e dos próximos três dias.
A resposta do Google vem em formato XML e vamos usar a classe SimpleXML (PHP 5) para manipular esses dados.
A URL da API
O script todo funciona de uma forma bem simples: você chama a URL da API informando a cidade, estado e o idioma de retorno e ele te responde com os dados no formato XML. A URL que iremos usar de exemplo é essa:
http://www.google.com/ig/api?weather=Rio de Janeiro,Rio de Janeiro,Brazil&hl=pt-br
Repare que passamos dois parâmetros na URL, o “weather” que é onde informaos a cidade, estado e país (Rio de Janeiro, Rio de Janeiro, Brazil)… Antes que você me chame de burro, Brasil lá fora se escreve com Z e não com S… E temos o segundo parâmetro é o “hl” que é o idioma no qual queremos a resposta (pt-br).
O Script
Primeiro nós definimos algumas variáveis que serão usadas pelo script:
<?php // Localização $cidade = 'Rio de Janeiro'; // Cidade $estado = 'Rio de Janeiro'; // Estado (sem abreviação!) $pais = 'Brazil'; // País (em inglês) $idioma = 'pt-br'; // Idioma de resposta (pt-br) // URL principal da API $googleWeather = 'http://www.google.com/ig/api'; ?>
Depois montamos a URL que será usada para chamar as informações:
// Montamos a URL que será chamada // Usamos a função urlencode() para substituir caracteres especiais $apiUrl = $googleWeather . '?weather=' . urlencode($cidade) . ',' . urlencode($estado) . ',' . urlencode($pais) . '&hl=' . $idioma;
Agora nós iremos pegar o resultado da API e passá-lo (em codificação UFT-8) para o SimpleXML:
// Pegamos o resultado da API $resultado = file_get_contents($apiUrl); // Usamos o SimpleXML para pegar a resposta // O SimpleXML precisa receber valores em UTF-8, então usamos o uft8_encode() $xml = simplexml_load_string(utf8_encode($resultado));
Agora nós já temos todas as informações, vamos separá-las usando o método xpath() do SimpleXML:
// Separamos as informações encontradas
$info = $xml->xpath('/xml_api_reply/weather/forecast_information');
$atual = $xml->xpath('/xml_api_reply/weather/current_conditions');
$proximos = $xml->xpath('/xml_api_reply/weather/forecast_conditions');
E por fim, exibimos as informações em formato HTML:
<h2>Previsão do Tempo - <?php echo date('d/m/Y', strtotime($info[0]->forecast_date['data'])); ?></h2>
<p>Cidade: <?php echo $info[0]->city['data']; ?></p>
<h3>Previsão Atual</h3>
<table>
<tr>
<td><img src="http://www.google.com<?php echo $atual[0]->icon['data']; ?>" alt="weather" /></td>
<td><?php echo $atual[0]->temp_c['data']; ?>° C<br /><?php echo $atual[0]->condition['data']; ?></td>
</tr>
</table>
<h3>Próximos dias</h3>
<table>
<?php foreach ($proximos AS $item) { ?>
<tr>
<td><?php echo $item->day_of_week['data'];?></td>
<td><img src="http://www.google.com<?php echo $item->icon['data']; ?>" alt="weather" /></td>
<td><?php echo $item->low['data']; ?>/<?php echo $item->high['data']; ?>° C<br /><?php echo $item->condition['data']; ?></td>
</tr>
<?php } ?>
</table>
O resultado

O Script Completo
Faça o download do script completo aqui: http://blog.thiagobelem.net/arquivos/2009/09/gwa.txt
Considerações finais
Claro que se você fizer seu PHP buscar os dados na API todas as vezes que for exibir a previsão do tempo o seu site ficará lento… É altamente recomendável que você salve esses dados em um banco de dados ou até um arquivo XML dentro do site e use essa fonte de dados (interna) para o site.
Espero que tenham gostado!
Abraços!
Baseado em: Showing the weather with PHP and Google Weather API
Quer copiar esse post no seu site? Você pode!
Segundo a licença da Creative Commons você pode copiar e distribuir esse conteúdo desde que faça menção ao autor original, para isso é só copiar esse código no final do artigo quando for publicá-lo em seu site:
<p>Artigo originalmente publicado em <em>13 de setembro de 2009</em> por <strong><a href="http://thiagobelem.net/" title="Thiago Belem, Desenvolvedor PHP">Thiago Belem</a></strong>: <a href="http://blog.thiagobelem.net/mostrando-a-previsao-do-tempo-com-php/" title="Mostrando a Previsão do Tempo com PHP">Mostrando a Previsão do Tempo com PHP</a></p>
A não menção ao autor original da obra implicará em cópia e/ou distribuição ilegal de propriedade intelectual, o que é crime segundo a Lei n.º 9.610.




Cara valeu mesmo.. mais uma vez vc com seus post abriu um leck para meus script show de bola… Sucesso!