#!/usr/bin/env python import os import re from operator import itemgetter mboxdir = '/usr/local/mailman/archives/private' def getfiles () : files = [] for filename in os.listdir( mboxdir ): match = re.match(r'(.*)\.mbox$', filename) if match: files.append(filename) return files def getemail ( file ) : emails = [] file = mboxdir+'/'+file+'/'+file try: h = open(file, 'r'); except IOError, e: return emails for line in h.readlines(): match = re.match(r'^From: (.*)\<([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})\>$', line) if match: emails.append(match.group(2)) return emails def getkeys( dict ) : lists = [] for email in dict.keys(): for list in dict[ email ].keys(): if not list in lists: lists.append(list) return lists def parsehtml( all ): keys = sorted(getkeys (all)) output = "
" for list in keys: list = list.replace(".mbox", "") output += " | " + list + " | \n" output += "|
" + email + " | \n" for list in keys: try: if all[ email ][ list ]: output += "" + str(all[ email ][ list ]) + " | \n" except KeyError: output += "0 | \n" output += "