initial commit
This commit is contained in:
commit
85ef0c5574
|
@ -0,0 +1,3 @@
|
|||
all.vcf
|
||||
mannschaftslisten.csv
|
||||
.vscode/
|
|
@ -0,0 +1,66 @@
|
|||
import csv
|
||||
import sys
|
||||
from datetime import datetime
|
||||
import phonenumbers
|
||||
|
||||
|
||||
def convert(csvfile):
|
||||
phone_rows = {
|
||||
"HOME,CELL": "Mobil (Privat)",
|
||||
"HOME,VOICE": "Festnetz (Privat)",
|
||||
"WORK,CELL": "Mobil (Arbeit)",
|
||||
}
|
||||
with open(csvfile, "r", encoding="latin-1") as source:
|
||||
reader = csv.DictReader(source)
|
||||
for row in reader:
|
||||
name = row["Name"]
|
||||
firstname = row["Vorname"]
|
||||
email = row["E-Mail"]
|
||||
street = row["Strasse"]
|
||||
postalcode = row["PLZ"]
|
||||
place = row["Ort"]
|
||||
title = row["Grad"]
|
||||
notes = row["Zug"]
|
||||
|
||||
birthday = datetime.strftime(
|
||||
datetime.strptime(row["Geburtsdatum"], "%d.%m.%Y"), "%Y%m%d"
|
||||
)
|
||||
|
||||
phones = ""
|
||||
for tpe, col in phone_rows.items():
|
||||
if row[col]:
|
||||
phonenumber_formatted = phonenumbers.format_number(
|
||||
phonenumbers.parse(row[col], "CH"),
|
||||
phonenumbers.PhoneNumberFormat.E164,
|
||||
)
|
||||
phones = phones + f'TEL;TYPE="{tpe}":{phonenumber_formatted}\n'
|
||||
|
||||
vcard = (
|
||||
"BEGIN:VCARD\n"
|
||||
"VERSION:3.0\n"
|
||||
f"N:{name};{firstname};;;\n"
|
||||
f"FN:{firstname} {name}\n"
|
||||
f"ORG:Feuerwehr Urdorf\n"
|
||||
f"EMAIL;TYPE=HOME:{email}\n"
|
||||
f"ADR;TYPE=HOME:;;{street};{place};;{postalcode};\n"
|
||||
f"TITLE:{title}\n"
|
||||
f"{phones}"
|
||||
f"BDAY;VALUE=DATE:{birthday}\n"
|
||||
f"NOTE:{notes}\n"
|
||||
"CATEGORIES:Feuerwehr\n"
|
||||
"END:VCARD\n"
|
||||
)
|
||||
print(vcard)
|
||||
|
||||
|
||||
def main(args):
|
||||
if len(args) != 2:
|
||||
print("Usage:")
|
||||
print(args[0] + " filename")
|
||||
return
|
||||
|
||||
convert(args[1])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main(sys.argv)
|
Loading…
Reference in New Issue