-
-
Save jleclanche/2689784 to your computer and use it in GitHub Desktop.
| #!/usr/bin/env python | |
| # encoding: utf-8 | |
| import sys | |
| from argparse import ArgumentParser | |
| from xml.dom import minidom | |
| try: | |
| from urllib.request import urlopen | |
| from urllib.parse import urlencode | |
| except ImportError: | |
| from urllib import urlopen, urlencode | |
| API_URL = "http://www.google.com/ig/api?" | |
| def main(): | |
| arguments = ArgumentParser(prog="weather") | |
| arguments.add_argument("--unit", choices="CF", dest="unit", default="C", help="Which unit to display the temperatures in") | |
| arguments.add_argument("location", nargs="+") | |
| args = arguments.parse_args(sys.argv[1:]) | |
| for location in args.location: | |
| url = API_URL + urlencode({"weather": location}) | |
| xml = urlopen(url).read() | |
| doc = minidom.parseString(xml) | |
| forecast_information = doc.documentElement.getElementsByTagName("forecast_information")[0] | |
| city = forecast_information.getElementsByTagName("city")[0].getAttribute("data") | |
| current_conditions = doc.documentElement.getElementsByTagName("current_conditions")[0] | |
| temp = current_conditions.getElementsByTagName("temp_f" if args.unit == "F" else "temp_c")[0].getAttribute("data") | |
| condition = current_conditions.getElementsByTagName("condition")[0].getAttribute("data") | |
| wind_condition = current_conditions.getElementsByTagName("wind_condition")[0].getAttribute("data") | |
| humidity = current_conditions.getElementsByTagName("humidity")[0].getAttribute("data") | |
| indent = " " | |
| print("Weather for {0}:".format(city)) | |
| print(indent + "{0}°{1}".format(temp, args.unit)) | |
| print(indent + condition) | |
| print(indent + wind_condition) | |
| print(indent + humidity) | |
| if __name__ == "__main__": | |
| main() | |
| """ | |
| adys@azura ~/src/scripts % ./weather.py London Bucharest "New York" | |
| Weather for London: | |
| 14°C | |
| Partly Cloudy | |
| Wind: S at 12 mph | |
| Humidity: 55% | |
| Weather for Bucharest, Bucuresti: | |
| 14°C | |
| Partly Cloudy | |
| Wind: E at 16 mph | |
| Humidity: 59% | |
| Weather for New York, NY: | |
| 26°C | |
| Clear | |
| Wind: N at 6 mph | |
| Humidity: 32% | |
| adys@azura ~/src/scripts % ./weather.py "Los Angeles" --unit=F | |
| Weather for Los Angeles, CA: | |
| 64°F | |
| Haze | |
| Wind: N at 0 mph | |
| Humidity: 68% | |
| """ |
root@novvvela:/home/bot# python weather.py London --unit=C
Traceback (most recent call last):
File "weather.py", line 44, in
main()
File "weather.py", line 25, in main
doc = minidom.parseString(xml)
File "/usr/lib/python2.7/xml/dom/minidom.py", line 1928, in parseString
return expatbuilder.parseString(string)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 940, in parseString
return builder.parseString(string)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 223, in parseString
parser.Parse(string, True)
xml.parsers.expat.ExpatError: syntax error: line 1, column 0
Hi @belindacosta and @BrainRTP:
Google's weather API shut down 4 years ago: http://thenextweb.com/google/2012/08/28/did-google-just-quietly-kill-private-weather-api/#gref
Try this instead https://github.com/csparpa/pyowm
I am getting this error for both of the websites:weather: error: the following arguments are required: location
good morining .
can any help to me ,to find previous weather data by using python coding.
Google weather api dead for now, you can remove this code )
I am getting an error that:
weather:error:the following arguments are required:location