summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/wolframalpha.py43
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.')