#! /usr/bin/env python

__version__ = 1, 7, 0

import difflib, sys, thread

################################################################
def fail(msg):
    out = sys.stderr.write
    out(msg + "\n\n")
    out(__doc__)
    return 0

def fopen(fname):
    try:
        return open(fname, 'U')
    except IOError, detail:
        return fail("couldn't open " + fname + ": " + str(detail))

def fcompare(f1name, f2name):
    import re
    mailsrch = re.compile(r'[\w\-][\w\-\.]+@[\w\-][\w\-\.]+[a-zA-Z]{1,4}')
    f1 = fopen(f1name)
    f2 = fopen(f2name)
    if not f1 or not f2:
        return 0
    a = f1.readlines(); f1.close()
    b = f2.readlines(); f2.close()
    d1 = {}
    for c in a:
       for m in mailsrch.findall(c):
          d1[m] = None
    print "starting list 2"

    file2List = []
    for d in b:
       file2List.extend(mailsrch.findall(d))
    print "finished storing information in lists."
    print "storing File1 in dictionary."

    utp = open("emailMatch.txt","w")    
    for item in file2List :   
       if d1.has_key( item ) :
          utp.write(item +  '\n')

    utp.close()
    #del file1List
    #del file2List
    print "finished comparing 2 lists."
    return 1

################################################################

def domainCompare(f2name, f3name):
  import re
  domsrch = re.compile(r"@(\S+)")
  mailsrch = re.compile(r'[\w\-][\w\-\.]+@[\w\-][\w\-\.]+[a-zA-Z]{1,4}')
 
  f2 = fopen(f2name)
  f3 = fopen(f3name)
  if not f2 or not f3:
     return 0
  a = f2.readlines(); f2.close()
  b = f3.readlines(); f3.close()
  file2List= []  
  file3List= []  

  for c in a:
       file2List.extend (mailsrch.findall(c))
  for d in b:
     file3List.extend(domsrch.findall(d))
  utp = open("domainMatch.txt","w")
  for domain in file3List:
        for email in file2List:
            getEmailDom = domsrch.findall(email)
            for emailDom in getEmailDom:
                if domain == emailDom:
                    utp.write(email +  '\n')
                       
  utp.close()


################################################################

def main():
    from time import sleep
    noisy = 1
    qseen = rseen = 0

    f1name = 'files1.txt'  # List of email addresses to filter
    f2name = 'files2.txt'  # MaxPitch's email list
    f3name = 'files3.txt'  # List of email domains to search for.
    
    #If domain option is chosen, then perform it.
    #return fcompare(f1name, f2name)
    fcompare(f1name, f2name)
    print "Stopped processing"
    #sleep(30)
    #print "Resuming processing"
    #domainCompare(f2name, f3name)
    print "done"



if __name__ == '__main__':
    #args = sys.argv[1:]
    #main(args)
    main()


