Results parser working for all LGAs (except melbourne)

This commit is contained in:
Kim Taylor
2024-11-16 12:03:29 +11:00
parent 464d617ecc
commit f8fd1cc20c
4 changed files with 235 additions and 17 deletions

158
results/gen-elected.php Normal file
View File

@@ -0,0 +1,158 @@
<?php
//require_once("parse_generic_csv.php");
$options = getopt("", ["candidates-files:"]);
if (isset($options['candidates-files'])) {
$candidates_files = $options['candidates-files'];
} else {
error_log("Error: Missing required option '--candidates-files'.");
exit(1);
}
function trim_sluggify($input) {
return strtolower(str_replace(' ', '-', trim($input)));
}
$candidates_files = explode(" ", $candidates_files);
/* Generate dictionary of candidates and LGAs */
$candidate_data = [];
foreach ($candidates_files as $file) {
$config_file = dirname($file)."/config.json";
$config_string = file_get_contents($config_file);
if ($config_string !== FALSE) {
$config = json_decode($config_string, true);
} else {
error_log("Error opening config.json.");
exit(1);
}
if (($handle = fopen($file, "r")) !== FALSE) {
$headers = fgetcsv($handle);
while (($data = fgetcsv($handle)) !== FALSE) {
$candidate = [];
foreach ($headers as $key => $value) {
$candidate[$value] = $data[$key];
}
$candidate['Council'] = $config['councilName'];
$name_slug = trim_sluggify($candidate['Candidate Name']);
$candidate_data[$name_slug] = $candidate;
}
}
}
print_r($candidate_data);
/* Get list of elected candidates */
//$lga_list = [];
/* Generate dictionary of LGAs and Wards */
//foreach ($config_files as $config_file) {
// $config_string = file_get_contents($config_file);
// if ($config_string !== FALSE) {
// $config = json_decode($config_string, true);
// } else {
// error_log("Error opening config.json.");
// exit(1);
// }
// $config['config-file'] = $config_file;
// $lga_list[] = $config;
//}
/* Match user typed LGA/Ward to our database */
//match_lga($candidate_data, $lga_list);
$header = ["Ward", "Candidate Name", "Rating", "Pledge", "Picture"];
/* Generate candidates-generic.csv */
//foreach ($lga_list as $lga) {
// $lga_candidates = array_filter($candidate_data, function ($candidate) use ($lga) {
// return $candidate['match_lga'] === $lga['slug'];
// });
//
// if (count($lga_candidates) === 0) continue;
//
// remove_duplicates($lga_candidates);
//
// $dir = dirname($lga['config-file']);
// $dir_files = scandir($dir);
// $output_file = $dir."/candidates-generic.csv";
// $override_file = $dir."/candidates-override.csv";
//
// if (($handle = fopen($output_file, "w")) === FALSE) {
// error_log('Error opening output file');
// exit(1);
// }
//
// if (fputcsv($handle, $header) === FALSE) {
// error_log('Error writing headers to output file');
// exit(3);
// }
//
// $lines = [];
// foreach ($lga_candidates as $candidate) {
// /* Add extension to photo hash */
// if (strlen($candidate['Photo'])) {
// foreach ($dir_files as $file) {
// if (preg_match("/\.json$/", $file)) continue;
// if (strstr($file, $candidate['Photo'])) {
// $candidate['Photo'] = $file;
// }
// }
// }
//
// $lines[] = [
// $candidate['match_ward'],
// $candidate['Name'],
// $candidate['Score'],
// $candidate['Pledge'],
// $candidate['Photo'],
// ];
// }
//
// /* Apply overrides if they exist */
// $overrides = [];
// if (file_exists($override_file)) {
// if (($ovr_handle = fopen($override_file, "r")) !== FALSE) {
// $headers = fgetcsv($ovr_handle);
// while (($data = fgetcsv($ovr_handle)) !== FALSE) {
// $override = [];
// foreach ($headers as $key => $value) {
// $override[$value] = $data[$key];
// }
// $overrides[] = $override;
// }
// fclose($ovr_handle);
// } else {
// error_log('Error opening overrides file');
// exit(3);
// }
// }
//
// foreach ($overrides as $override) {
// foreach ($lines as $line_key => $line) {
// $match_index = array_search($override['Match Field'], $header);
// $replace_index = array_search($override['Replace Field'], $header);
// if ($line[$match_index] === $override['Match Value']) {
// if ($replace_index !== false)
// $lines[$line_key][$replace_index] = $override['Replace Value'];
// else /* If 'Replace Field' is not matched - delete this entry */
// $lines[$line_key]['Delete'] = 'y';
// }
// }
// }
//
// foreach ($lines as $line) {
// if (isset($line['Delete'])) continue;
// if (fputcsv($handle, $line) === FALSE) {
// error_log('Error writing candidate to output file');
// exit(3);
// }
// }
// fclose($handle);
//}
exit(0);