User:Polbot/source/Cheese.pl

use strict; use Perlwikipedia;

my $Polbot_password = '(bot password)'; my $soonest_next_op = time; my $wait_time = 10;

print "\nLogging in to Wikipedia.\n" ; my $pw=Perlwikipedia->new; $pw->{mech}->agent('Bot/polbot'); my $login_status=$pw->login('Polbot', $Polbot_password); die "I can't log in." unless ($login_status eq 0);

print "\n";

my @links = $pw->what_links_here("Template:Cheese"); my @transcluders = ; print scalar (@links). " link to it.\n";

foreach my $link (@links) { if ($link->{type} eq "transclusion") { push @transcluders, $link->{title}; } }

print scalar (@transcluders). " transclude it.\n";

foreach my $transcluder (@transcluders) { print "\nReading $transcluder\n"; my $wiki = $pw->get_text($transcluder);

if ($wiki =~ m/\{\{\s*Cheese\s*\|([^\|\{\}\[\]]*(?:[\[\{]+[^\[\]\}\{]*[\]\}]+[^\|\{\}\[\]]*)*)\|([^\|\{\}\[\]]*(?:[\[\{]+[^\[\]\}\{]*[\]\}]+[^\|\{\}\[\]]*)*)\|([^\|\{\}\[\]]*(?:[\[\{]+[^\[\]\}\{]*[\]\}]+[^\|\{\}\[\]]*)*)\|([^\|\{\}\[\]]*(?:[\[\{]+[^\[\]\}\{]*[\]\}]+[^\|\{\}\[\]]*)*)\|([^\|\{\}\[\]]*(?:[\[\{]+[^\[\]\}\{]*[\]\}]+[^\|\{\}\[\]]*)*)\|([^\|\{\}\[\]]*(?:[\[\{]+[^\[\]\}\{]*[\]\}]+[^\|\{\}\[\]]*)*)\|([^\|\{\}\[\]]*(?:[\[\{]+[^\[\]\}\{]*[\]\}]+[^\|\{\}\[\]]*)*)\|([^\|\{\}\[\]]*(?:[\[\{]+[^\[\]\}\{]*[\]\}]+[^\|\{\}\[\]]*)*)\|([^\|\{\}\[\]]*(?:[\[\{]+[^\[\]\}\{]*[\]\}]+[^\|\{\}\[\]]*)*)\}\}/is) { my $name = $1; my $image = $2; my $country = $3; my $regiontown = $4; my $source = $5; my $pasteurised = $6; my $texture = $7; my $aging = $8; my $certification = $9; $name =~ s/^\s*(.*?)\s*$/$1/; $image =~ s/^\s*(.*?)\s*$/$1/; $country =~ s/^\s*(.*?)\s*$/$1/; $regiontown =~ s/^\s*(.*?)\s*$/$1/; $source =~ s/^\s*(.*?)\s*$/$1/; $pasteurised =~ s/^\s*(.*?)\s*$/$1/; $texture =~ s/^\s*(.*?)\s*$/$1/; $aging =~ s/^\s*(.*?)\s*$/$1/; $certification =~ s/^\s*(.*?)\s*$/$1/;

my $newtemplate = ""; $wiki =~ s/\{\{\s*Cheese(\s|\|)[^\{\}]*(\{\{[^\{\}]*\}\}[^\{\}]*)*\}\}/$newtemplate/is; wiki_write($transcluder, $wiki, " ->, per Bot requests"); } else { print "template not found\n"; } } sub wiki_write { my $article_name = shift; my $wiki_out = shift; my $edit_summary = shift; $|=1;	print " Waiting ". ($soonest_next_op - time). " secs... "; $|=1;	while (time < $soonest_next_op) {}; $soonest_next_op = time + $wait_time; print "Writing $article_name\n"; $pw->edit($article_name, $wiki_out, $edit_summary); }