make-user/fingertxt2json
2016-08-11 21:43:42 +02:00

93 lines
2.9 KiB
Python
Executable file

#!/usr/bin/env python3
import pprint
import json
import re
finger = "/afs/stacken.kth.se/home/stacken/Private/finger.txt"
i=0
people=[]
for line in open(finger, 'rb'):
if i > 0:
jsn = {}
dl = str(line, 'iso-8859-1').strip()
spl = dict(enumerate(dl.split(';')))
if spl.get(0, None):
jsn["efternamn"] = spl.get(0,"")
if spl.get(1, None):
jsn["förnamn"] = spl.get(1,"")
if spl.get(2, None):
jsn["sortering"] = spl.get(2,"")
if spl.get(3, None):
jsn["titel"] = spl.get(3,"")
if spl.get(4, None):
jsn["c/o"] = spl.get(4,"")
if spl.get(5, None):
jsn["avdelning"] = spl.get(5,"")
if spl.get(6, None):
jsn["organisation"] = spl.get(6,"")
if spl.get(7, None):
jsn["gatuadress"] = spl.get(7,"")
if spl.get(8, None):
jsn["postadress"] = spl.get(8,"")
if spl.get(9, None):
jsn["land"] = spl.get(9,"")
if spl.get(10, None):
jsn["distrubution"] = spl.get(10,"")
if spl.get(11, None):
jsn["hemtelefon"] = spl.get(11,"")
if spl.get(12, None):
jsn["arbtelefon"] = spl.get(12,"")
if spl.get(13, None):
jsn["ppn"] = spl.get(13,"")
if spl.get(14, None):
jsn["användarnamn"] = spl.get(14,"")
if spl.get(15, None):
jsn["mailadress"] = spl.get(15,"")
if spl.get(16, None):
jsn["betalt"] = int(spl.get(16,0))
if spl.get(17, None):
jsn["inträdesdatum"] = spl.get(17,"")
if spl.get(18, None):
jsn["utträdesdatum"] = spl.get(18,"")
if spl.get(19, None):
rest = []
for status in spl[19].split(","):
ss = status.strip()
if ss == "Epost-kallelse":
jsn['Epost-kallelse'] = True
elif ss == "Ny":
jsn['Ny'] = True
elif ss == "Hallnyckel":
jsn['Hallnyckel'] = True
elif ss == "Hedersmedlem":
jsn['Hedersmedlem'] = True
elif ss == "Fel adress":
jsn['Fel_adress'] = True
elif ss == "Slutat":
jsn['Slutat'] = True
elif ss == "Utesluten":
jsn['Utesluten'] = True
else:
rest.append(ss)
if rest:
jsn["status"] = ",".join(rest)
if spl.get(20, None):
if re.match('^[0-9]+$', spl[20]):
jsn["kortnr"] = int(spl[20])
else:
jsn["kortstatus"] = spl[20]
people.append(jsn)
i+=1
print(json.dumps(people,indent=4, sort_keys=True, ensure_ascii=False))