diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/wolframalpha.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/modules/wolframalpha.py b/modules/wolframalpha.py new file mode 100644 index 0000000..0750578 --- /dev/null +++ b/modules/wolframalpha.py @@ -0,0 +1,43 @@ +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.') |