User:Polbot/source/Checktemplates.pl

use strict; use Perlwikipedia;

my $Polbot_password = '(secret password)';

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);

my $stats_list = ''; my $page_of_templates = $pw->get_text("User:Polbot/templatelist"); my @template_list = ($page_of_templates =~ m/\[\[Template\:([^\]]*)\]\]/g);

foreach my $template_name (@template_list) { my $template = $pw->get_text("Template:$template_name"); print "Examining Template:$template_name\n"; my $table = "Status of links for $template_name\n\n{|class=\"wikitable sortable\"\n|-\n! display order\n! displayed link\n!article\n! notes\n"; while ($template =~ s/(.*) .*?<\/noinclude>/$1/) {}; my @links = ($template =~ m/\[\[([^\[\]]*)\]\]/g); print " Numlinks: ". scalar(@links). "\n"; my $i = 0;

foreach my $link (@links) { next if $link =~ m/^\:?Category:/; next if $link =~ m/^..\:/; $i++; $table .= "|-\n| $i "; my $disp_link = $link; my $art_name = $link; if ($link =~ m/(.*)\|(.*)/) { $disp_link = $2; $art_name = $1; }		print " $i : $art_name\n"; $table .= "|| $disp_link || $art_name "; my $art = $pw->get_text($art_name); my $art_notes = ""; if (! $art) { $art_notes = "redlink"; } else { # Look for rd			if ($art =~ m/\#\s*redirect\s*\[\[([^\]]*)\]\]/i) { $art_notes = "redirect to $1. "; } else { # Look for template if ($art !~ m/\{\{\s*$template_name\s*(\}\}|\|)/i) { $art_notes = "template missing. "; }				# Look for infobox if ($art =~ m/\{\{\s*taxobox/i) { # Cut out everything except the taxobox $art =~ s/.*(\{\{\s*taxobox[^\{\}]*(?:(?:\{\{[^\{\}]*\}\})[^\{\}]*)*\}\}).*/$1/si; if ($art =~ m/\|\s*status\s*=\s*EX\b/is) { $art_notes .= "extinct. "; }					if ($art =~ m/\|\s*subspecies\s*=/is) { $art_notes .= "subspecies. "; }				} else { $art_notes .= "taxobox missing. "; }			}		}		$art_notes = "nothing unusual. " if ! $art_notes; $table .= "|| $art_notes\n"; #last if $i > 15; }	$table .= "|}"; print "Writing...\n\n"; $pw->edit("Wikipedia:WikiProject Mammals/Article templates/stats/$template_name", $table, "Creating usage report per Bot requests"); $stats_list .= "* WikiProject Mammals/Article templates/stats/$template_name\n"; }

$pw->edit("Wikipedia:WikiProject Mammals/Article templates/stats", $stats_list, "Creating usage report per Bot requests");