X-Git-Url: https://jfr.im/git/erebus.git/blobdiff_plain/2b2ae2811cec8832a8d9c73e683e183206be283c..9cd36ba73c89d96a6a29d83f511403a8e5cefcbb:/modules/weather.py diff --git a/modules/weather.py b/modules/weather.py index 5973350..5d43569 100644 --- a/modules/weather.py +++ b/modules/weather.py @@ -22,7 +22,7 @@ import json, urllib, time, rfc822 def location(person, default=None): return lib.mod('userinfo')._get(person, 'location', default=None) -@lib.hook(needchan=False) +@lib.hook(('weather','w'), needchan=False) @lib.help('[]', 'show weather for your location') def weather(bot, user, chan, realtarget, *args): if len(args) == 0: @@ -32,12 +32,16 @@ def weather(bot, user, chan, realtarget, *args): if place is not None: weather = json.load(urllib.urlopen('http://api.wunderground.com/api/8670e6d2e69ff3c7/conditions/q/%s.json' % (place))) - if 'error' in weather: - bot.msg(chan, "Error from Wunderground: %s" % (weather['error']['description'])) - return + if 'response' in weather: + if 'error' in weather['response']: + bot.msg(chan, "Error from Wunderground: %s" % (weather['response']['error']['description'])) + return + if 'results' in weather['response']: + bot.msg(chan, "That search term is ambiguous. Please be more specific.") + return current = weather['current_observation'] - measuredat = rfc822.parsedate_tz(current['observation_time_rfc822'])[:-1] # parsedate_tz returns a 10-tuple which strftime DOESN'T ACCEPT + measuredat = rfc822.parsedate(current['observation_time_rfc822']) # parsedate_tz returns a 10-tuple which strftime DOESN'T ACCEPT measuredatTZ = current['local_tz_short'] output = u"Weather in %(location)s: As of %(time)s %(tz)s, %(conditions)s, %(cel)s\u00B0C (%(far)s\u00B0F) (feels like %(flcel)s\u00B0C (%(flfar)s\u00B0F)). Wind %(wind)s. %(link)s" % { 'location': current['observation_location']['full'], @@ -50,4 +54,4 @@ def weather(bot, user, chan, realtarget, *args): } bot.msg(chan, output) else: - bot.msg(chan, "I don't know where to look!") + bot.msg(chan, "I don't know where to look! Try SETINFO LOCATION ")