Yahoo Weather Logo

Yahoo Weather API – Python

Yahoo nos ofrece una serie de herramientas útiles para nuestro entorno de desarrollo y entre esas se encuentra «The Yahoo Weather API», la cual como su nombre lo dice sirve para obtener información del clima de localizades puntuales tanto el clima actual como un pronostico de varios días futuros.

Yahoo Weather Console

Este site ofrece una forma super útil para probar esta api y jugar realizando consultas:

Weather Client Console

Tienes la posibilidad de realizar las consultas tanto por locación (lat-long) y por woeid (Where On Earth IDentifier) este ultimo se puede encontrar tanto en el site de Yahoo weather o en este lugar Buscador de woeid

Informacion del Clima de New York City
[enlighter lang=»sql»]
select * from weather.forecast where woeid=2459115
[/enlighter]

Este resultado tiene información en Millas y Grados farenheit, en caos de querer la información en celsius solo basta con modificar la consulta de esta manera:

[enlighter lang=»sql»]

select * from weather.forecast where woeid=2459115 and u = ‘c’

[/enlighter]

Para poder realizar una búsqueda con la ubicación (lat-long) se realiza de esta manera:
Cuando se realice una consulta con la ubicación debe de tener en cuenta hacer una consulta previa para confirmar que retorna la ciudad correcta.

[enlighter lang=»sql»]

select * from weather.forecast where woeid in
(SELECT woeid FROM geo.places WHERE text='(40.6453531,-74.0150372)’) and u = ‘c’

[/enlighter]

Python

Para consumir esta api con python procedemos a lo siguiente:

Tener en cuenta que para poder realizar una peticion a Weather API hay que crear una cuenta en el portal de Yahoo y crear una app

Instalar la libreria «Requests» para realizar peticiones HTTP.

[enlighter lang=»js»]

pip install requests

[/enlighter]

[enlighter lang=»py»]

import requests

#URL Base
baseurl = «https://query.yahooapis.com/v1/public/yql»

#Query
query = «select * from weather.forecast where woeid in (SELECT woeid FROM geo.places WHERE text='({}, {})’) and u = ‘c'»

#Parametros
params = {}

params[‘q’] = query.format(lat, lon)
params[‘format’] = ‘json’

#Ejecutar la peticion
result = requests.get(baseurl, params=params)

[/enlighter]

Referencias

Yahoo Weather Documentacion
Yahoo Weather Consola