#!/usr/bin/python

from os import listdir, path
import time
import email.Parser
import re
from email.Utils import parsedate
from netaddr import EUI
from netaddr.eui import NotRegisteredError

dortoir = "/donnees/prive/Mail/resel/inscription"
tard = time.strptime("07 Sep 2009", "%d %b %Y")
trestard = time.strptime("18 Jan 2088", "%d %b %Y")

jeunes = {}
for line in open("liste_jeunes"):
    line = line.rstrip("\n")
    jeunes[line] = trestard

tendances = {}

def parse(lit):
    p = email.Parser.Parser()
    fp = open(path.join(dortoir, lit), "rb")
    msg = p.parse(fp)
    fp.close()
    return msg

for lit in listdir(dortoir):
    msg = parse(lit)
    dateInscr = parsedate(msg.get("Date"))
    sujet = msg.get("Subject")
    if not sujet:
        continue
    m = re.match("^\[Inscription Brest\] Machine .* - (.*)\] par (.*)$", sujet)
    if not m:
        continue
    literie = m.group(1)
    dormeur = m.group(2)
    try:
        marque = EUI(literie).oui().registration()[0]["org"]
    except NotRegisteredError:
        marque = str.join(":", literie.split(":")[0:3])
    if tendances.has_key(marque):
        tendances[marque] += 1
    else:
        tendances[marque] = 1
    if not jeunes.has_key(dormeur):
        continue
    else:
        jeunes[dormeur] = min(dateInscr, jeunes[dormeur])

total = 0
levetot = 0
noninscrit = 0
for j in jeunes.keys():
    total += 1
    if jeunes[j] < tard:
        levetot += 1
    elif jeunes[j] == trestard:
        noninscrit += 1

print total, levetot, noninscrit

c = 0
for m in sorted(tendances.keys(), key=str.lower):
    print "#" * (tendances[m]),
    print "%s (%d)" % (m, tendances[m])
    c += tendances[m]

print c
