Source code for cslbot.commands.wolf

# -*- coding: utf-8 -*-
# Copyright (C) 2013-2015 Samuel Damashek, Peter Foley, James Forcier, Srijay Kasturi, Reed Koser, Christopher Reffett, and Fox Wilson
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

from lxml.etree import fromstring

from requests import get

from ..helpers.command import Command
from ..helpers.urlutils import get_short


@Command('wolf', ['config'])
[docs]def cmd(send, msg, args): """Queries WolframAlpha. Syntax: {command} <expression> """ if not msg: send("Evaluate what?") return params = {'format': 'plaintext', 'reinterpret': 'true', 'input': msg, 'appid': args['config']['api']['wolframapikey']} req = get('http://api.wolframalpha.com/v2/query', params=params) if req.status_code == 403: send("WolframAlpha is having issues.") return xml = fromstring(req.content) output = xml.findall('./pod') key = args['config']['api']['googleapikey'] url = get_short("http://www.wolframalpha.com/input/?i=%s" % msg, key) text = "No output found." for x in output: if 'primary' in x.keys(): text = x.find('./subpod/plaintext').text if text is None: send("No Output parsable") else: # Only send the first three lines of output for t in text.splitlines()[:3]: send(t) send("See %s for more info" % url)