]> piware.de Git - bin.git/blob - vcard2gnokii
e585488f82b3aac9d65a36b163e23b228233a2d7
[bin.git] / vcard2gnokii
1 #!/usr/bin/python
2
3 import sys
4
5 def output_info(info):
6     if info.has_key('X-EVOLUTION-FILE-AS'):
7         result = info['X-EVOLUTION-FILE-AS']
8     elif info.has_key('N'):
9         name_comp = info['N'].split(';')
10         result = '%s\, %' % (name_comp[0], ' '.join([c for c in name_comp[1:] if c]))
11     else:
12         print >> sys.stderr, 'No suitable name for', info
13         return
14
15     result += ';;ME;;5'
16
17     id = 0
18
19     for k, v in info.iteritems():
20         kf = k.split(';')
21         type = 0
22         if len(kf) > 1:
23             if kf[1] == 'TYPE=HOME':
24                 type = 2
25             elif kf[1] == 'TYPE=CELL':
26                 type = 3
27             elif kf[1] == 'TYPE=WORK':
28                 type = 6
29
30         if kf[0] == 'ADR':
31             result += ';9;%i;%i;%s' % (type, id, '\\n'.join([f for f in v.split(';') if f]))
32         elif kf[0] == 'EMAIL':
33             result += ';8;%i;%i;%s' % (type, id, v)
34         elif kf[0] == 'TEL':
35             result += ';11;%i;%i;%s' % (type, id, v)
36         elif kf[0] == 'BDAY':
37             result += (';10;0;%i;BDAY: ' %id) + v
38         else:
39             continue
40
41         id += 1
42
43     print result
44
45 info = {}
46 for line in open(sys.argv[1]):
47     if not line or line[0] == ' ':
48         continue
49     line = line.strip()
50     if not line:
51         continue
52     try:
53         (key, value) = line.split(':', 1)
54     except ValueError:
55         print >> sys.stderr, 'ignoring invalid line:', line
56         continue
57     value = value.strip()
58     if value == 'VCARD':
59         if key == 'BEGIN':
60             info = {}
61         elif key == 'END':
62             output_info(info)
63     if value:
64         info[key] = value.strip()