#!/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))