import csv import random import hashlib def generate_tps_code(tps_counter): return f"TPS{tps_counter:02}" def generate_id(prov, kota, kec, kel, tps_code): return f"{prov}-{kota}-{kec}-{kel}-{tps_code}" def create_dummy_data(): data_list = [] total_jml_surat_diterima = 0 total_jml_surat_dikembalikan = 0 total_jml_surat_tidak_digunakan = 0 total_jml_surat_digunakan = 0 total_sah_calon_a = 0 total_sah_calon_b = 0 total_sah_calon_c = 0 total_tidak_sah = 0 # Provinsi 51 for provinsi_51 in range(51, 51 + 3): for kota_51 in range(provinsi_51 * 100 + 1, provinsi_51 * 100 + 3): # Update rentang untuk kota for kecamatan_51 in range(kota_51 * 1000 + 50, kota_51 * 1000 + 53): for i in range(3): kelurahan_51 = 7 + i combined_number_kelurahan_51 = int(f"{kecamatan_51:07d}{kelurahan_51 + 100:03d}") for i in range(2): jml_surat_diterima = random.randint(50, 200) jml_surat_dikembalikan = random.randint(0, 10) jml_surat_tidak_digunakan = random.randint(0, 10) jml_surat_digunakan = jml_surat_diterima - jml_surat_dikembalikan - jml_surat_tidak_digunakan sah_calon_a = random.randint(0, jml_surat_digunakan) sah_calon_b = random.randint(0, jml_surat_digunakan - sah_calon_a) sah_calon_c = jml_surat_digunakan - sah_calon_a - sah_calon_b jml_surat_tidak_sah = jml_surat_digunakan - (sah_calon_a + sah_calon_b + sah_calon_c) total_jml_surat_diterima += jml_surat_diterima total_jml_surat_dikembalikan += jml_surat_dikembalikan total_jml_surat_tidak_digunakan += jml_surat_tidak_digunakan total_jml_surat_digunakan += jml_surat_digunakan total_sah_calon_a += sah_calon_a total_sah_calon_b += sah_calon_b total_sah_calon_c += sah_calon_c total_tidak_sah += jml_surat_tidak_sah # Generate random data hash data_hash1 = hashlib.sha256(str(random.getrandbits(256)).encode('utf-8')).hexdigest() data_hash2 = hashlib.sha256(str(random.getrandbits(256)).encode('utf-8')).hexdigest() # Generate ID based on the pattern tps_code = generate_tps_code(i + 1) random_id = generate_id(provinsi_51, kota_51, kecamatan_51, combined_number_kelurahan_51, tps_code) args_value = { "Username": f"zilla{i+1}", "ID": random_id, "DataHash1": data_hash1, "DataHash2": data_hash2, "JmlSuratDiterima": jml_surat_diterima, "JmlSuratDikembalikan": jml_surat_dikembalikan, "JmlSuratTidakDigunakan": jml_surat_tidak_digunakan, "JmlSuratDigunakan": jml_surat_digunakan, "JmlSuaraSahCalonA": sah_calon_a, "JmlSuaraSahCalonB": sah_calon_b, "JmlSuaraSahCalonC": sah_calon_c, "JmlSuaraSahSeluruhCalon": sah_calon_a + sah_calon_b + sah_calon_c, "JmlSuaraTidakSah": jml_surat_tidak_sah, "JmlSuaraSahTidakSah": sah_calon_a + sah_calon_b + sah_calon_c } data_list.append(args_value) return data_list, total_jml_surat_diterima, total_jml_surat_dikembalikan, total_jml_surat_tidak_digunakan, total_jml_surat_digunakan, total_sah_calon_a, total_sah_calon_b, total_sah_calon_c, total_tidak_sah dummy_data_list, total_jml_surat_diterima, total_jml_surat_dikembalikan, total_jml_surat_tidak_digunakan, total_jml_surat_digunakan, total_a, total_b, total_c, total_tidak_sah = create_dummy_data() print(f"Total JmlSuratDiterima: {total_jml_surat_diterima}") print(f"Total JmlSuratDikembalikan: {total_jml_surat_dikembalikan}") print(f"Total JmlSuratTidakDigunakan: {total_jml_surat_tidak_digunakan}") print(f"Total JmlSuratDigunakan: {total_jml_surat_digunakan}") print(f"Total JmlSuaraSahCalonA: {total_a}") print(f"Total JmlSuaraSahCalonB: {total_b}") print(f"Total JmlSuaraSahCalonC: {total_c}") print(f"Total JmlSuaraTidakSah: {total_tidak_sah}") # Simpan data dalam format CSV csv_file_path = 'output.csv' with open(csv_file_path, 'w', newline='', encoding='utf-8') as csvfile: fieldnames = ["Username", "ID", "DataHash1", "DataHash2", "JmlSuratDiterima", "JmlSuratDikembalikan", "JmlSuratTidakDigunakan", "JmlSuratDigunakan", "JmlSuaraSahCalonA", "JmlSuaraSahCalonB", "JmlSuaraSahCalonC", "JmlSuaraSahSeluruhCalon", "JmlSuaraTidakSah", "JmlSuaraSahTidakSah"] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) # Tulis header writer.writeheader() # Tulis data for data in dummy_data_list: writer.writerow(data) # Tulis baris baru untuk total total_data = {"Username": "Total", "ID": "Total", "JmlSuratDiterima": total_jml_surat_diterima, "JmlSuratDikembalikan": total_jml_surat_dikembalikan, "JmlSuratTidakDigunakan": total_jml_surat_tidak_digunakan, "JmlSuratDigunakan": total_jml_surat_digunakan, "JmlSuaraSahCalonA": total_a, "JmlSuaraSahCalonB": total_b, "JmlSuaraSahCalonC": total_c, "JmlSuaraSahSeluruhCalon": total_a + total_b + total_c, "JmlSuaraTidakSah": total_tidak_sah, "JmlSuaraSahTidakSah": total_a + total_b + total_c} writer.writerow(total_data) print(f"Data telah disimpan dalam file CSV: {csv_file_path}")