Informações do tempo com o Open Weather [Exemplo em Python]

Há algum tempo atrás, postei aqui no blog um artigo de como usar a Google Weather API, só que infelizmente esse projeto foi descontinuado. Na busca de uma nova forma de obter essas informações facilmente acabei encontrando o Open Weather.

Open Weather

O Open Weather é um projeto que visa disponibilizar informações do clima de praticamente todas as cidades do planeta, com ele é possível obter informações da temperatura atual, nebulosidade, umidade relativa do ar e até mesmo a hora do nascer e pôr do sol!

Utilizando na minha aplicação

Você pode obter as informações de duas formas: JSON e XML. Para obter os dados basta você efetuar uma requisição conforme abaixo:

Retornando em JSON:

http://api.openweathermap.org/data/2.5/weather?q=Itajai,BR

Retornando em XML:

http://api.openweathermap.org/data/2.5/weather?q=Itajai,BR&mode=xml

Os exemplos acima são por nome e país, mas existem também a possibilidade de se fazer a requisição utilizando a latitude e longitude:

http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139

O Open Weather também possui suporte multi-línguas, para retornar os dados em português basta adicionar na URL a query string &lang=pt

http://api.openweathermap.org/data/2.5/forecast/daily?id=524901&lang=pt

Por padrão, o Open Weather retorna as informações de temperatura em Kelvin, para obter em Celsius basta adicionar na URL a query string units:

http://api.openweathermap.org/data/2.5/forecast/daily?id=524901&units=metric&

Exemplo em Python

Para exemplificar melhor o uso do Open Weather, aqui vai um pequeno script em Python onde leio os dados no formato JSON.


import urllib2 #para efetuar a requisicao
import json #para ler o JSON

data = urllib2.urlopen('http://api.openweathermap.org/data/2.5/weather?q=Itajai,BR&units=metric&lang=pt')
html = data.read()
weather = json.loads(html)
temperatura = str(weather['main']['temp']) + ' graus'
nebulosidade = str(weather['clouds']['all']) + ' %'
umidade = str(weather['main']['humidity']) + ' %'
print "Em Itajai %s. Nebulosidade: %s. Umidade relativa do ar: %s." % (temperatura, nebulosidade, umidade)

Por hoje é só!
Abraço