info = { 'author': 'Jon Bergli Heier', 'title': 'WolframAlpha', 'description': 'WolframAlpha', } import urllib, urllib2 from lxml.etree import ElementTree class Module(object): config_section = 'module/wolframalpha' def __init__(self, bot): self.irc = bot if self.irc: self.irc.register_keyword('!wa', self) def keyword(self, nick, channel, kw, msg): target = channel if not channel == self.irc.nickname else nick.split('!')[0] query = { 'appid': config.get(self.config_section, 'api_key'), 'format': 'plaintext', 'input': msg, } if config.has_option(self.config_section, 'location'): query['location'] = config.get(self.config_section, 'location') u = urllib2.urlopen('http://api.wolframalpha.com/v2/query?%s' % urllib.urlencode(query)) xmldoc = ElementTree() xmldoc.parse(u) xml = xmldoc.getroot() if xml.attrib['success'] != 'true': # TODO: check didyoumean tags self.irc.msg(target, 'No result.') return result = None for pod in xml.findall('pod'): if pod.attrib['id'] == 'Result': result = pod.find('subpod/plaintext').text if result: self.irc.msg(target, 'Result: %s' % result) else: self.irc.msg(target, 'Something failed.')