#!/usr/bin/python # -*- coding: utf-8 -*- # --------------------------------------------------------------------------- # # # # Plugin for iSida Jabber Bot # # Copyright (C) Vit@liy # # # # 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 3 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, see . # # # # --------------------------------------------------------------------------- # try: quotes_list = json.loads(readfile(data_folder % 'quotes.txt'),encoding='utf-8') except: quotes_list = {'bash': {'title': u'bash.org.ru - Цитатник Рунета', 'random': ['http://bash.org.ru/random', '((?:.|\\s)+?)'], 'number': ['http://bash.org.ru/quote/%s', '((?:.|\\s)+?)']}} def quote(type, jid, nick, text): global quotes_list tmp = text.strip().split() if not tmp: tmp =[random.choice([q for q in quotes_list.keys() if quotes_list[q].has_key('random')])] if len(tmp) == 1 and tmp[0] == 'list': msg = (L('Quotes:\n','%s/%s'%(jid,nick)) + '\n'.join(['%s - %s (%s)' % (q, quotes_list[q]['title'], ', '.join(k for k in quotes_list[q].keys() if k != 'title').replace('random', L('rand','%s/%s'%(jid,nick))).replace('number', L('by number','%s/%s'%(jid,nick))).replace('search', L('search','%s/%s'%(jid,nick)))) for q in sorted(quotes_list.keys())])) elif len(tmp) == 1 and quotes_list.has_key(tmp[0]) and quotes_list[tmp[0]].has_key('random'): try: url = quotes_list[tmp[0]]['random'][0] body = html_encode(load_page(url)) message = re.search(unescape(quotes_list[tmp[0]]['random'][1]), body).group(1) msg = unhtml(message) except: msg = L('Can\'t searching random quote!','%s/%s'%(jid,nick)) elif len(tmp) > 1 and quotes_list.has_key(tmp[0]) and quotes_list[tmp[0]].has_key('number') and re.match('\d+\Z', tmp[1]): try: url = quotes_list[tmp[0]]['number'][0] % tmp[1] body = html_encode(load_page(url)) message = re.search(unescape(quotes_list[tmp[0]]['number'][1]), body).group(1) msg = unhtml(message) if not msg: msg = L('Can\'t searching quote by number!','%s/%s'%(jid,nick)) except: msg = L('Can\'t searching quote by number!','%s/%s'%(jid,nick)) elif len(tmp) > 1 and quotes_list.has_key(tmp[0]) and quotes_list[tmp[0]].has_key('search'): try: url = quotes_list[tmp[0]]['search'][0] % urllib.quote(tmp[1].encode(quotes_list[tmp[0]]['search'][2])) body = html_encode(load_page(url)) message = re.search(unescape(quotes_list[tmp[0]]['search'][1]), body).group(1) msg = unhtml(message) except: msg = L('Quote not found!','%s/%s'%(jid,nick)) else: msg = L('What?','%s/%s'%(jid,nick)) send_msg(type, jid, nick, msg) def ithap(type, jid, nick, text): quote(type, jid, nick, 'ithap %s' % text) def afor(type, jid, nick): quote(type, jid, nick, 'afor') global execute execute = [(3, 'quote', quote, 2, 'Quote from Internet. Exaples:\nquote list - list of resources\nquote [ [number|text]]'), (3, 'ithap', ithap, 2, 'Quote from ithappens.ru\nithap [number]'), (3, 'afor', afor, 1, 'Show random aphorism from skio.ru')]