# Look up the definition of something using google
def defineq(bot, cmd, nick, conn, public):
cmdrest = string.join(cmd.split()[1:])
- targ = ("http://www.google.com/search?q=define%%3A%s&ie=utf-8&oe=utf-8"
+ targ = ("http://www.google.co.uk/search?q=define%%3A%s&ie=utf-8&oe=utf-8"
% urllib.quote_plus(cmdrest))
try:
# Just slurp everything into a string
# This is of course going to be a bit fragile. We first look for
# 'Definitions of %s on the Web' -- if this isn't present we
# assume we have the 'no definitions found page'.
- # The first defn starts after the following <p> tag.
+ # The first defn starts after the following <p> tag, but as the
+ # first <li> in a <ul type="disc" class=std>
# Following that we assume that each definition is all the non-markup
# before a <br> tag. Currently we just dump out the first definition.
- match = re.search(r"Definitions of <b>.*?</b> on the Web.*?<p>\s*([^>]*)<br>",defnpage,re.MULTILINE)
+ match = re.search(r"Definitions of <b>.*?</b> on the Web.*?<li>\s*([^>]*)((<br>)|(<li>))",defnpage,re.MULTILINE)
if match == None:
bot.automsg(public,nick,"Some things defy definition.")
else:
# We assume google has truncated the definition for us so this
# won't flood the channel with text...
- defn = " ".join(match.group(1).split("\n"));
+ defn = " ".join(match.group(1).split("\n"))
bot.automsg(public,nick,defn)
except IOError: # if the connection times out. This blocks. :(
bot.automsg(public,nick,"The web's broken. Waah!")
bot.disconnect(msg="Be right back.")
### list keys of a dictionary
-def listkeysq(bot, cmd, nick, conn, public, dict):
- bot.automsg(public,nick,string.join(dict.keys()))
+def listkeysq(bot, cmd, nick, conn, public, dict, sort=False):
+ d=dict.keys()
+ if sort:
+ d.sort()
+ bot.automsg(public,nick,string.join(d))
### rot13 text (yes, I could have typed out the letters....)
### also "foo".encode('rot13') would have worked