User:Polbot/source/statsproblems.pl

use strict; use Perlwikipedia;
 * 1) statsproblems.pl

my $soonest_next_op = time;

print "\nStarting polbot\n" ; my $pw=Perlwikipedia->new; $pw->{mech}->agent('Bot/WP/EN/Quadell/polbot');
 * 1) $pw->{debug} = 1;

print "Logging in\n"; my $login_status=$pw->login('Polbot','(bot password)'); die "I can't log in." unless ($login_status eq 0);

my %judges;

print "Getting judges.\n"; my $main_wiki = $pw->get_text('Wikipedia:WikiProject United States courts and judges/judgestats'); my @lines = split(/\n/, $main_wiki); foreach my $line (@lines) { # Ignore non-listed lines if ($line =~ /^\| \[\[([^\|]+)\]\] \|\|/) { my $listed_judge = $1; $judges{$listed_judge} = $listed_judge; } }

print scalar(keys %judges). " judges\n";

my %replacements; print "Getting known replacements.\n"; my $wiki = $pw->get_text('Wikipedia:WikiProject United States courts and judges/judgestats/known replacements'); my @lines = split(/\n/, $wiki); foreach my $line (@lines) { # Ignore non-listed lines if ($line =~ /^\* \[\[(.*)\]\] should be \[\[(.*)\]\]$/m) { my $tempfrom = $1; my $tempto = $2; $replacements{$tempfrom} = $tempto; } }
 * 1) Get known replacements

print scalar(keys %replacements). " replacements\n";

print "Looking through judges:\n"; foreach my $judgekey (sort keys %judges) { my $judge = $judgekey; print "$judge ";

# check for replacements if ($replacements{$judgekey}) { $judges{$judgekey} = $replacements{$judgekey}; print "predefined exception: ". $replacements{$judgekey}. "\n"; } else { # check for redirect my $wiki = $pw->get_text($judge); if ($wiki =~ m/\#\s*redirect\s*\[\[(.*)\]\]/i) { $judge = $1; print "rd to $judge, "; $wiki = $pw->get_text($judge); }		# is it a judge? if ($wiki =~ m/\[\[\s*category\s*:\s*(Judges of the United States |United States Supreme Court justices|Chief Justices of the United States)/i) { print "good.\n"; $judges{$judgekey} = $judge; } else { print "WRITING ERROR.\n"; my $tempwiki = $pw->get_text('Wikipedia:WikiProject United States courts and judges/judgestats/problems'); $tempwiki .= "* $judgekey\n"; $pw->edit('Wikipedia:WikiProject United States courts and judges/judgestats/problems', $tempwiki, "* $judgekey"); }	} }

foreach my $judge (sort keys %judges) { if ($judge ne $judges{$judge}) { $main_wiki =~ s/\[\[$judge\]\]/$judges{$judge}/g; } }
 * 1) Replace all

$main_wiki =~ s/\n\| ([^\|]*) \|\| ([^\|]*) \|\| ([^\|]* \|\| [^\|]+ \|\| [^\|]+ \|\| [^\|]+ \|\| [^\|]+) \|\| ([^\|]+ \|\| [^\|]+) \|\| assignment to another court ([^\n]*)\n\|\-\n\| \1 \|\| ([^\|]*) \|\| \- \|\| \- \|\| \- \|\| \- \|\| \- \|\| ([^\n]*)\n/\n| $1 || $2 || $3 || $4 || assignment to another court $5\n|-\n| $1 || $6 || $3 || $7\n/sg;
 * 1) Pull down info for those whose seats changed by process of law

print "\n\nWriting back... "; $pw->edit('Wikipedia:WikiProject United States courts and judges/judgestats', $main_wiki, "cleanup");

die"done.\n";