#!/usr/bin/python import sys def output_info(info): if info.has_key('X-EVOLUTION-FILE-AS'): result = info['X-EVOLUTION-FILE-AS'] elif info.has_key('N'): name_comp = info['N'].split(';') result = '%s\, %' % (name_comp[0], ' '.join([c for c in name_comp[1:] if c])) else: print >> sys.stderr, 'No suitable name for', info return result += ';;ME;;5' for k, v in info.iteritems(): kf = k.split(';') type = 0 if len(kf) > 1: if kf[1] == 'TYPE=HOME': type = 2 elif kf[1] == 'TYPE=CELL': type = 3 elif kf[1] == 'TYPE=WORK': type = 6 if kf[0] == 'ADR': result += ';9;%i;9;%s' % (type, '\\n'.join([f for f in v.split(';') if f])) if kf[0] == 'EMAIL': result += ';8;%i;8;%s' % (type, v) if kf[0] == 'TEL': result += ';11;%i;11;%s' % (type, v) if kf[0] == 'BDAY': result += ';10;0;10;BDAY: ' + v print result info = {} for line in open(sys.argv[1]): if not line or line[0] == ' ': continue line = line.strip() if not line: continue try: (key, value) = line.split(':', 1) except ValueError: print >> sys.stderr, 'ignoring invalid line:', line continue value = value.strip() if value == 'VCARD': if key == 'BEGIN': info = {} elif key == 'END': output_info(info) if value: info[key] = value.strip()