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:
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]