#!/usr/bin/python
import re
import os
import sys
import csv
import shutil
import getopt
import StringIO
import subprocess
from PIL import Image
from PIL.ExifTags import TAGS, GPSTAGS
from email.Parser import Parser as EmailParser
tmpdir = '/opt/tmp/md{:05}'.format(os.getpid())
curdir = os.path.join(tmpdir, 'cur')
mu = '/usr/local/bin/mu'
cformat = 'csv'
index = [ mu, 'index', '--nocolor', '--muhome={}'.format(tmpdir), '--log-stderr', '--maildir={}'.format(tmpdir) ]
cfind = [ mu, 'cfind', '--nocolor', '--muhome={}'.format(tmpdir), '--log-stderr', '--format={}'.format(cformat) ]
def main():
if len(sys.argv) < 2:
usage()
rc = 0
try:
os.makedirs(curdir)
copied = False
for fname in sys.argv[1:]:
try:
shutil.copy2(fname, curdir)
copied = True
except Exception as e:
print('!!! unable to copy: {}'.format(fname))
rc = 1
continue
if not copied:
return rc
cmd = index
p = subprocess.Popen(cmd,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, err = p.communicate('')
rc = p.returncode
if rc != 0:
raise Exception('rc={}'.format(rc))
cmd = cfind
p = subprocess.Popen(cmd,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, err = p.communicate('')
rc = p.returncode
if rc != 0:
raise Exception('rc={}'.format(rc))
rows = csv.reader(StringIO.StringIO(out))
addrs = {}
for row in rows:
if row[0]:
row[0] = r'\"{}\" '.format(row[0])
addrs[row[1]] = '{}<{}>'.format(*row)
print("'(")
for item in addrs.items():
print(' ("{}" . "{}")'.format(*item))
print(')')
except Exception as e:
print('!!! failed: {}: {}'.format(e, cmd[0]))
rc = 1
finally:
try:
shutil.rmtree(tmpdir)
except Exception as e:
print('{}'.format(e))
return rc
def usage():
print('usage: {} file ...'.format(os.path.basename(sys.argv[0])))
sys.exit(1)
if __name__ == '__main__':
sys.exit(main())