]> jfr.im git - erebus.git/blobdiff - modules/weather.py
weather - cleanup
[erebus.git] / modules / weather.py
index 597335019db22735d7cc8f7fc2daa9e1033b1eb4..5d435696fa1c6cbbcff0d2ad35ccee267ae8db60 100644 (file)
@@ -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('[<location>]', '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 <your location>")