Source code for cslbot.commands.xkcd

# -*- 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 random import randrange

from requests import get

from ..helpers.command import Command


[docs]def get_latest(): return get('http://xkcd.com/info.0.json').json()['num']
@Command('xkcd', ['config'])
[docs]def cmd(send, msg, args): """Gets a xkcd comic. Syntax: {command} [num|latest|term] """ latest = get_latest() if not msg: msg = randrange(1, latest) elif msg == 'latest': msg = latest elif msg.isdigit(): msg = int(msg) if msg > latest or msg < 1: send("Number out of range") return else: send(do_search(msg, args['config']['api']['googleapikey'], args['config']['api']['xkcdsearchid'])) return url = 'http://xkcd.com/%d/info.0.json' % msg if msg != 'latest' else 'http://xkcd.com/info.0.json' data = get(url).json() output = "%s -- http://xkcd.com/%d" % (data['safe_title'], data['num']) send(output)