Skip to content

Instantly share code, notes, and snippets.

@altilunium
Created February 18, 2024 17:07
Show Gist options
  • Save altilunium/a63204e9c35ece194ea5910daefdda13 to your computer and use it in GitHub Desktop.
Save altilunium/a63204e9c35ece194ea5910daefdda13 to your computer and use it in GitHub Desktop.
Sirekap QuickCount - DPRD
import json
# Specify the path to your JSON file
file_path = 'dprdbekasi3'
meta = 'dprdbekasi3_meta'
print("DPRD Kota Bekasi 3 (Rawalumbu, Bantargebang, Mustikajaya) : 11 kursi")
available_kursi = 11
init_kursi = 11
with open(file_path, 'r') as file:
data = json.load(file)
with open(meta, 'r') as file:
datam = json.load(file)
npartai = dict()
npartai["1"] = "PKB"
npartai["2"] = "Gerindra"
npartai["3"] = "PDIP"
npartai["4"] = "Golkar"
npartai["5"] = "NasDem"
npartai["6"] = "Partai Buruh"
npartai["7"] = "Gelora"
npartai["8"] = "PKS"
npartai["9"] = "PKN"
npartai["10"] = "Hanura"
npartai["11"] = "Garuda"
npartai["12"] = "PAN"
npartai["13"] = "PBB"
npartai["14"] = "Demokrat"
npartai["15"] = "PSI"
npartai["16"] = "Perindo"
npartai["17"] = "PPP"
npartai["24"] = "Partai Ummat"
namedb = dict()
for i in datam:
try:
for j in datam[i]:
namedb[j] = datam[i][j]["nama"]
except Exception:
pass
kpartai = dict()
partai = dict()
partaiorig = dict()
allvote = 0
for i in data["chart"]:
if i != "persen":
allvote = allvote + data["chart"][i]
partai[i] = data["chart"][i]
partaiorig[i] = partai[i]
partai = dict(sorted(partai.items(), key=lambda x: x[1], reverse=True))
kaderpartai_all = dict()
kaderpartai_p = dict()
kaderpartai = dict()
divider = dict()
for i in data["table"]:
if i != "progres":
kaderpartai[i] = dict()
divider[i] = 1
kpartai[i] = 0
for j in data["table"][i]:
if j != "jml_suara_total" and j != "jml_suara_partai":
kaderpartai[i][j] = data["table"][i][j]
kaderpartai_all[j] = data["table"][i][j]
kaderpartai_p[j] = i
kaderpartai[i]= dict(sorted(kaderpartai[i].items(), key=lambda x: x[1], reverse=True))
'''
for x in kaderpartai[i]:
print(namedb[x],kaderpartai[i][x])
'''
print()
lolos = set()
while available_kursi != 0:
'''
for i in partai:
print(npartai[i],partai[i])
'''
# pick one
for i in partai:
divider[i] = divider[i] + 2
partai[i] = partaiorig[i] / divider[i]
for x in kaderpartai[i]:
print("%s : %s (%d suara)" % (npartai[i], namedb[x],kaderpartai[i][x]))
lolos.add(x)
del kaderpartai[i][x]
kpartai[i] = kpartai[i] + 1
break
break
available_kursi = available_kursi - 1
partai = dict(sorted(partai.items(), key=lambda x: x[1], reverse=True))
print()
partaiorig = dict(sorted(partaiorig.items(), key=lambda x: x[1], reverse=True))
for i in partaiorig:
if kpartai[i] > 0 :
pc = round(partaiorig[i] / allvote * 100,2)
nya = init_kursi * partaiorig[i] / allvote
#print(npartai[i],":",partaiorig[i],"suara,",pc,"% ",kpartai[i],"kursi")
print("%s : %d suara (%.2f %%) -> %d kursi (%d x %.2f%% = %.2f)" % (npartai[i], partaiorig[i],pc,kpartai[i],init_kursi,pc,nya))
else:
pc = round(partaiorig[i] / allvote * 100,2)
print("%s : %d suara (%.2f %%)" % (npartai[i], partaiorig[i],pc))
print()
percent = data["progres"]["progres"] / data["progres"]["total"] * 100
percent = round(percent, 2)
print("Data dari Situng KPU edisi",data["ts"])
print("Data masuk : %.2f%% (%d dari %d TPS)" % (percent, data["progres"]["progres"], data["progres"]["total"]))
print()
kaderpartai_all= dict(sorted(kaderpartai_all.items(), key=lambda x: x[1], reverse=True))
for i in kaderpartai_all:
calegid = i
partaiid = kaderpartai_p[i]
if (i in lolos):
print(" %s (%d suara %s + menang)" % (namedb[i],kaderpartai_all[i],npartai[partaiid]))
else:
print("%s (%d suara %s)" % (namedb[i],kaderpartai_all[i],npartai[partaiid]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment