# plugs/imdb.py
#
#

__copyright__ = 'this file is in the public domain'

from gozerbot.commands import cmnds
from gozerbot.generic import geturl
import sys, urllib, string, re

def handle_imdb(bot, ievent):
    try:
        nr = ievent.args[0]
    except:
        ievent.missing('<nr>')
        return

    retitle = re.compile(r'<title>(.*)</title>')
    revotes = re.compile(r'width=\"20\" height=\"18\" border=\"0\" align=\"middle\" alt=\"_\"></a>\n<b>(.*)/10</b> \((.*) votes\)',re.DOTALL)
    replot = re.compile(r'Outline:</b>(.*?)<a href', re.DOTALL)
    title = "<unknown>"
    votes = ("?", "?")
    test = 'http://imdb.com/Title?' + nr
    data = geturl(test)
    match = retitle.search(data)
    # title
    t = match.groups()[0]
    if match and len(t) > 2:
        title = t
    ievent.reply(test + ' : ' + "%s" % title)

def handle_imdbnumber(bot, ievent):
    if not ievent.rest:
        ievent.missing('<item>')
        return
    try:
        int(ievent.rest)
        handle_imdb(bot, ievent)
        return
    except:
        pass
    item = string.join(string.split(ievent.rest),"+")
    renumber = re.compile(r'Most popular searches</A></H2>\n<OL><LI>\
<A HREF=\"\/title\/tt(.*?)\/\">(.*?)</A>',re.DOTALL)
    removies = re.compile(r'Movies</A></H2>\n<OL><LI>\
<A HREF=\"\/title\/tt(.*?)\/\">(.*?)</A>',re.DOTALL)
    reelse = re.compile(r'<a href=\"/title/tt(.*?)/',re.DOTALL)
    retitle = re.compile(r'<title>(.*)</title>')
    data = geturl('http://www.imdb.com/Tsearch?title=%s' % item)
    match = renumber.search(data)
    if match:
        t = match.groups()[0]
        q = match.groups()[1]
        ievent.args[0] = t
        handle_imdb(bot, ievent)
        return
    else:
        match = reelse.search(data)
        if match:
            title = retitle.search(data)
            if title:
                x = title.groups()[0]
                y = match.groups()[0]
                ievent.args[0] = y
                handle_imdb(bot, ievent)
                return
        else:
            alternative = removies.search(data)
            if alternative:
                y = alternative.groups()[0]
                x = alternative.groups()[1]
                ievent.args[0] = y
                handle_imdb(bot, ievent)
                return
    ievent.reply('no item found')

cmnds.add('imdb', handle_imdbnumber, 'USER')
