Introduction
The module provides a python wrapper around the Yahoo! Weather, Google Weather and NOAA APIs.
Author: Eugene Kaznacheev <qetzal@gmail.com>
(pywapi - Python Weather API)
Building
From source
Download the latest pywapi library from: http://python-weather-api.googlecode.com/files/pywapi-0.2.1.tar.gz
Untar the source distribution and run:
$ python setup.py build $ python setup.py install
Getting the code
View the trunk at: http://python-weather-api.googlecode.com/svn/trunk/
Check out the latest development version anonymously with:
svn checkout http://python-weather-api.googlecode.com/svn/trunk/ python-weather-api-read-only
Documentation
Yahoo! Weather
Use the following function, that fetches weather report from Yahoo
pywapi.get_weather_from_yahoo( location_id , units = 'metric' )
location_id: A five digit US zip code or location ID. To find your location ID, browse or search for your city from the Weather home page(http://weather.yahoo.com/) The weather ID is in the URL for the forecast page for that city. You can also get the location ID by entering your zip code on the home page. For example, if you search for Los Angeles on the Weather home page, the forecast page for that city is http://weather.yahoo.com/forecast/USCA0638.html. The location ID is USCA0638.
units: type of units. 'metric' for metric and '' for non-metric Note that choosing metric units changes all the weather units to metric, for example, wind speed will be reported as kilometers per hour and barometric pressure as millibars. Default value is 'metric'.
Returns: weather_data: a dictionary of weather data that exists in XML feed. See http://developer.yahoo.com/weather/#channel
Google Weather
Use the following function, that fetches weather report from Google
pywapi.get_weather_from_google( location_id , hl = '' )
location_id: a zip code (10001); city name, state (weather=woodland,PA); city name, country (weather=london,england); latitude/longitude(weather=,,,30670000,104019996) or possibly other.
hl: the language parameter (language code). Default value is empty string, in this case Google will use English.
Returns: weather_data: a dictionary of weather data that exists in XML feed. Example of XML responce from Google
NOAA
Use the following function, that fetches weather report from NOAA: National Oceanic and Atmospheric Administration (United States)
pywapi.get_weather_from_noaa( station_id )
station_id: the ID of the weather station near the necessary location
To find your station ID, perform the following steps:
- Open this URL: http://www.weather.gov/xml/current_obs/seek.php?state=az&Find=Find
- Select the necessary state state. Click 'Find'.
- Find the necessary station in the 'Observation Location' column.
- The station ID is in the URL for the weather page for that station.
For example if the weather page is http://weather.noaa.gov/weather/current/KPEO.html -- the station ID is KPEO.
Other way to get the station ID: use this library: http://code.google.com/p/python-weather/ and Weather.location2station function.
Returns: weather_data: a dictionary of weather data that exists in XML feed. Example of XML responce from NOAA
(useful icons: http://www.weather.gov/xml/current_obs/weather.php)
Examples
More examples
Script
import pywapi
import string
google_result = pywapi.get_weather_from_google('10001')
yahoo_result = pywapi.get_weather_from_yahoo('10001')
noaa_result = pywapi.get_weather_from_noaa('KJFK')
print "Google says: It is " + string.lower(google_result['current_conditions']['condition']) + " and " + google_result['current_conditions']['temp_c'] + "C now in New York.\n\n"
print "Yahoo says: It is " + string.lower(yahoo_result['condition']['text']) + " and " + yahoo_result['condition']['temp'] + "C now in New York.\n\n"
print "NOAA says: It is " + string.lower(noaa_result['weather']) + " and " + noaa_result['temp_c'] + "C now in New York.\n"Result
[~] python examples/pywapi-example.py Google says: It is overcast and 15C now in New York. Yahoo says: It is fog and 14C now in New York. NOAA says: It is overcast and 15C now in New York.
Where is it used?
Weather script for GeekTool: http://www.leancrew.com/all-this/2009/06/new-weather-script-for-geektool/
Google Wave robot: http://code.google.com/p/firstwave/wiki/DrWeather
http://blog.chrisramsay.co.uk/2009/08/11/getting-weather-information-with-python/
Weather plugins for Dreambox E2: http://linux-sat.tv/index.php/topic,314.msg1328/topicseen.html#msg1328.
NEWS
v0.2.2 (31 August 2009) + Ability to get countries and cities lists from Google was added. + Shebang was added to the example scripts. Thank you, Runa. ! Small corrections to fix some pychecker's warnings. ! get_weather_from_google() now supports non-English languages. Thank you, Shinysky. ! "400: Bad Request" error was fixed. It appeared when Google API is used and lo cation contains special characters(for example spaces). Thank you, Dan.y.tang. ! Some changes to prevent possible IndexError issues. v0.2.1 (07 July 2009) + GisMeteo service was removed. It doesn't provide XML feeds anymore. ! IndexError issue was fixed. Thank you, Dr. Drang. v0.2 (29 May 2009) + Added support of NOAA XML feeds + Added support of GisMeteo XML feeds + Re-organized files: no more package, only one Python module + Added some example scripts + Added CHANGELOG and README files v0.1 (18 May 2009) + Inital release: it is possible to get weather reports from Yahoo and Google