gplugs.wowwiki

access WoW wiki pages.

gplugs.wowwiki.getwikidata(url, ievent)

fetch wiki data

gplugs.wowwiki.handle_wowwiki(bot, ievent)

wikipedia <what> .. search wikipedia for <what>

CODE

# plugs/wowwiki.py
#
#

""" access WoW wiki pages. """

__status__ = "seen"

gozerbot imports

from gozerbot.generic import geturl, striphtml, splittxt, handle_exception, fromenc
from gozerbot.commands import cmnds
from gozerbot.aliases import aliases
from gozerbot.examples import examples
from gozerbot.utils.rsslist import rsslist
from gozerbot.plughelp import plughelp

basic imports

from urllib import quote
import re

plughelp

plughelp.add('wowwiki', 'query wowwiki')

defines

wikire = re.compile('start content(.*?)end content', re.M)
getwikidata function

def getwikidata(url, ievent):
    """ fetch wiki data """
    try:
        result = fromenc(geturl(url))
    except IOError, ex:
        try:
            errno = ex[0]
        except IndexError:
            handle_exception(ievent=ievent)
            return
        ievent.reply('invalid option')
        return
    if not result:
        ievent.reply("can't find data for %s" % url)
        return
    res = rsslist(result)
    txt = ""
    for i in res:
        try:
            txt = i['text']
            break
        except:
            pass
    if not txt:
        ievent.reply("no data found on %s" % url)
        return
    #txt = re.sub('\[\[Image:([^\[\]]+|\[\[[^\]]+\]\])*\]\]', '', txt)
    txt = txt.replace('[[', '')
    txt = txt.replace(']]', '')
    txt = re.sub('\s+', ' ', txt)
    return txt

wowwiki command

def handle_wowwiki(bot, ievent):
    """ wikipedia <what> .. search wikipedia for <what> """
    if not ievent.rest:
        ievent.missing('<what>')
        return
    what = ""
    lang = 'en'
    for i in ievent.rest.split():
        first = i[0].upper()
        rest = i[1:]
        if i.startswith('-'):
            if len(i) != 3:
                ievent.reply('invalid option')
                return
            lang = i[1:]
            continue
        what += "%s%s " % (first, rest)
    what = what.strip().replace(' ', '_')
    url = 'http://wowwiki.com/wiki/Special:Export/%s' % quote(what.encode('utf-8'))
    url2 = 'http://wowwiki.com/wiki/%s' % quote(what.encode('utf-8'))
    txt = getwikidata(url, ievent)
    if not txt:
        return
    if '#REDIRECT' in txt or '#redirect' in txt:
        redir = ' '.join(txt.split()[1:])
        url = 'http://wowwiki.com/wiki/Special:Export/%s' % quote(redir.encode('utf-8'))
        url2 = 'http://wowwiki.com/wiki/%s' % quote(redir.encode('utf-8'))
        txt = getwikidata(url, ievent)
    if not txt:
        return
    res = ['%s ===> ' % url2, ]
    res += splittxt(striphtml(txt).strip())
    ievent.reply(res)

cmnds.add('wowwiki', handle_wowwiki, 'USER')
examples.add('wowwiki', 'wowwiki <what> .. search wowwiki for <what>','1) wowwiki gozerbot')
aliases.data['wow'] = 'wowwiki'

Table Of Contents

Previous topic

gplugs.wisdom

Next topic

gplugs.yahoo

This Page