#!/usr/bin/python
import re, time, sys, os

from xml.sax import make_parser 
from xml.sax.handler import ContentHandler

now = time.localtime(time.time())
later = time.localtime(time.time() + 90 * 60)
muchlater = time.localtime(time.time() + 240 * 60)
last = time.localtime(time.time() + 480 * 60)

filename = os.getenv("HOME") + '/.xmltv/dk.xml'

class ProgrammeHandler(ContentHandler):
    
    def __init__(self):
        self.channels = {}
        self.regexen = []
        for i in open(os.getenv("HOME") + '/.greptv').readlines(): self.regexen.append(re.compile(i[:-1], re.I))
        self.results = {}
        self.currentdata = {}
        self.currentname = ""

    def startElement(self, name, attrs):
        self.currentname = name
        self.currentdata[name] = ""
        if name == "programme":
            self.currentdata["start"] = attrs.getValue("start")
            self.currentdata["channel"] = attrs.getValue("channel")

    def endElement(self, name):
        if name == "programme":
            for j in self.regexen:
                if j.findall(self.currentdata["title"]):
                    idx = time.strptime(self.currentdata["start"][0:12], "%Y%m%d%H%M"), self.currentdata["channel"]
                    self.results[idx] = [str(self.currentdata["title"].encode("ISO8859-1")).rstrip(), idx, self.currentdata["channel"]]

    def characters(self, chars):
        self.currentdata[self.currentname] += chars

    def endDocument(self):
        keys = self.results.keys()
        keys.sort()
        for i in keys:
            print "%s - %s (%s)" % (time.strftime("%a %m/%d %H:%M", i[0]), self.results[i][0], self.results[i][2].encode("ISO8859-1"))

greptv = ProgrammeHandler()
saxparser = make_parser()
saxparser.setContentHandler(greptv)

saxparser.parse(filename)
