import csv import json import sys # Script om Evi vermogensontwikkeling om te zetten in het CSV formaat van de # ASN, zodat het door plotasn.py meegenomen kan worden. # # Om de data te krijgen: # # 1. Ga naar https://mijn.evivanlanschot.nl/deelnemer/vermogensontwikkeling # 2. Er wordt een request gedaan naar /deelnemer/vermogensontwikkeling/postjsondata # 3. Dit script converteert zulke data op stdin naar een CSV bestand op stdout MONTHS = { 'jan': '01', 'feb': '02', 'mrt': '03', 'apr': '04', 'mei': '05', 'jun': '06', 'jul': '07', 'aug': '08', 'sep': '09', 'okt': '10', 'nov': '11', 'dec': '12', } def parse_date(s): d, m, y = s.split('-') return '{}-{}-20{}'.format(d, MONTHS[m], y) def evi_to_asn(json): dates = [e['label'] for e in obj['categories'][0]['Category']] cum = obj['dataset'][0] assert cum['seriesName'] == 'Cumulatieve ontwikkeling' prev = 0 for date, entry in zip(dates, cum['data']): if len(entry['value']) == 0: continue value = float(entry['value'].replace(',', '.')) if value == prev: continue diff = round(value - prev, 2) date = parse_date(date) yield '', '', '', '', '', '', '', 'EUR', prev, 'EUR', diff, date prev = value if __name__ == '__main__': for line in sys.stdin: s = json.loads(line) obj = json.loads(s) wr = csv.writer(sys.stdout) for line in evi_to_asn(obj): wr.writerow(line)