#!/usr/bin/python3 import sys, re regex = re.compile(r"TEL;TYPE=([0-9A-Za-z-]+).*,pref:(.*)$") for fn in sys.argv[1:]: fnc = fn[:-4] + "_converted.vcf" with open(fn, "rt") as f, open(fnc, "wt") as g: print("BEGIN:VCARD", file=g) print("VERSION:2.1", file=g) for line in f: line = line.rstrip() email_found = False if line.startswith("N:"): first_semi = line.index(";") second_semi = line[first_semi+1:].index(";") out = line[:first_semi+1+second_semi] print(out, file=g) elif line.startswith("BDAY:"): print(line, file=g) elif line.startswith("TEL;"): match = regex.match(line) if match: (typ, number) = match.groups() if number.startswith("+49"): number = "0" + number[3:] if number.startswith("+"): number = "00" + number[1:] out = "TEL;" + typ + ":" + number print(out, file=g) elif line.startswith("EMAIL;") and not email_found: colon_index = line.index(":") out = "EMAIL:" + line[colon_index+1:] print(out, file=g) email_found = True print("END:VCARD", file=g)