Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions etc/btwmeta-gen.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import tkinter.filedialog
import csv
import json
import xml.etree.ElementTree as ET

# Die beiden hier geforderten Dateien fanden sich für das Ergebnis 2021
# auf der Webseite der Bundeswahlleiterin unter:
# > Bundestagswahl 2021 > Ergebnisse > Open Data
#
# Die Parteienliste fand sich unter:
# Bereitgestellte Daten > Beschreibende Daten > btw21_parteien.csv
# <https://bundeswahlleiterin.de/dam/jcr/9c660d9e-ef9f-4ec4-8f06-da1d031a2057/btw21_parteien.csv>
parties_csv = tkinter.filedialog.askopenfilename(title="btwNN_parteien.csv", filetypes=[("btwNN_parteien.csv", "*.csv")])
if parties_csv == '':
exit(0)
# Die Ergebnisse fanden sich unter:
# Ergebnisdateien > Verzeichnis "date" > XML-Dateien > sitze_VV.xml
# https://www.bundeswahlleiterin.de/bundestagswahlen/2021/ergebnisse/opendata/btw21/20210926_hauptwahl/daten/sitze_05.xml
seats_xml = tkinter.filedialog.askopenfilename(title="sitze_x.xml", filetypes=[("sitze_NN.xml", "*.xml")])
if seats_xml == '':
exit(0)

with open(parties_csv, newline="", encoding = "utf-8-sig") as f:
reader = csv.DictReader(filter(lambda row: row[0]!='#', f), delimiter=";")
parties = list(filter(lambda x: x['Gruppenart_XML'] != 'EINZELBEWERBER', reader))

parties_dict = dict(map(lambda x: (x['Gruppenschluessel'], x['Gruppenname_kurz']), parties))

results_dict = {}

tree = ET.parse(seats_xml)
bund = tree.find("Gebiet[@Gebietsart='BUND']")
for sitze in bund.iterfind("SitzeGruppe"):
gruppe = parties_dict[sitze.attrib['Gruppe']]
count = sitze.attrib['Gesamt']
print(f'"{gruppe}": {count},')
49 changes: 49 additions & 0 deletions etc/btwmeta.json
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,55 @@
"Übrige": 0,
"uri": "https://www.bundeswahlleiter.de/bundestagswahlen/2017/ergebnisse/bund-99.html"
}
},
{
"id": 20,
"date": "2021-09-26",
"seats": 736,
"party": {
"CDU": 152,
"SPD": 206,
"AfD": 83,
"FDP": 92,
"DIE LINKE": 39,
"GRÜNE": 118,
"CSU": 45,
"FREIE WÄHLER": 0,
"Die PARTEI": 0,
"Tierschutzpartei": 0,
"HEIMAT": 0,
"PIRATEN": 0,
"ÖDP": 0,
"V-Partei³": 0,
"DiB": 0,
"BP": 0,
"Tierschutzallianz": 0,
"MLPD": 0,
"Verjüngungsforschung": 0,
"MENSCHLICHE WELT": 0,
"DKP": 0,
"Die Grauen": 0,
"BüSo": 0,
"Die Humanisten": 0,
"Gartenpartei": 0,
"du.": 0,
"SGP": 0,
"dieBasis": 0,
"Bündnis C": 0,
"BÜRGERBEWEGUNG": 0,
"III. Weg": 0,
"BÜNDNIS21": 0,
"LIEBE": 0,
"Wir Bürger": 0,
"PdF": 0,
"LfK": 0,
"SSW": 1,
"Team Todenhöfer": 0,
"UNABHÄNGIGE": 0,
"Volt": 0,
"Übrige": 0,
"uri": "https://bundeswahlleiterin.de/bundestagswahlen/2021/ergebnisse/bund-99.html"
}
}
]
}