1#!/usr/bin/env python3
2
3import string, sys
4
5
6def lReadEfile(sFileName):
7	try:
8		sLines = open(sFileName).read()
9	except:
10		print ('Error opening %s' %sFileName)
11	lLines = []
12	lLines = sLines.split('\n')
13	return lLines
14
15
16def dElines2Dict(lElines):
17	dAliases = {}
18	for sEntry in lElines:
19		if '"' in sEntry:
20			lChunks = sEntry.split('"')
21		else:
22			lChunks = sEntry.split(' ')
23		if lChunks[0] != 'alias':
24			print ('ignoring invalid line: %s' %sEntry)
25		else:
26			sAdresses = lChunks[2:].join(',')
27			print ('Entry added: %s %s' %(lChunks[1],sEntry))
28			dAliases[lChunks[1]]=sAdresses
29	return dAliases
30
31
32def vWriteGfile(dAliases, sFileName):
33	try:
34		oFile = open(sFileName, 'w')
35	except:
36		print ('Error opening %s' %sFileName)
37		return 0
38	for sKey in dAliases.keys():
39		#print ('BEGIN:VCARD')
40		#print ('N:;%s' %sKey)
41		#print ('BDAY:')
42		#print ('ADR;HOME:;;;;;;')
43		#print ('TEL:;')
44		#print ('EMAIL;INTERNET:%s' %dAliases[sKey])
45		#print ('END:VCARD')
46		oFile.write ('BEGIN:VCARD\n')
47		oFile.write ('FN:%s\n' %sKey)
48		oFile.write ('N:;%s\n' %sKey)
49		oFile.write ('BDAY:\n')
50		oFile.write ('ADR;HOME:;;;;;;;\n')
51		oFile.write ('TEL:;\n')
52		oFile.write ('EMAIL;INTERNET:%s\n' %dAliases[sKey])
53		oFile.write ('END:VCARD\n')
54	oFile.close()
55	return 1
56
57
58if __name__ == '__main__':
59	if len(sys.argv) >= 3:
60		sEfileName = sys.argv[1]
61		sGfileName = sys.argv[2]
62		lAliases = lReadEfile(sEfileName)
63		dAliases = dElines2Dict(lAliases)
64		if vWriteGfile(dAliases, sGfileName) == 1:
65			print ('Done!')
66		else:
67			print ('Error saving output-file')
68	else:
69		print ('Usage:\n %s <Eudora addressbook> <Gnomecard file>' %sys.argv[0])
70