Benutzer:Pberndt/Algorithmensammlung Harvester/Quellcode

#!/usr/bin/perl
use LWP::UserAgent;

sub get {
	$ua = LWP::UserAgent->new;
	$ua->agent("Mozilla/8.0");
	$req = HTTP::Request->new(GET => $_[0]);
	$req->header('Accept' => 'text/html');
	$res = $ua->request($req);
	if ($res->is_success) {
		return $res->decoded_content;
	}
	else {
		print ("Error: " . $res->status_line . "\n");
		die;
	}
}

my $seitenliste = get("http://de.wikibooks.org/w/index.php?title=Spezial%3APr%C3%A4fixindex&prefix=Algorithmensammlung%3A");
my @seiten;
while($seitenliste =~ m#/wiki/Algorithmensammlung:[^:"]+:[^"]+#g) {
	push @seiten, $&;
}

my %progs;
my %implement;
for $seite (@seiten) {
	$implement{$seite} = {};
	my $content = get("http://de.wikibooks.org" . $seite);
	while($content =~ m#mw-headline"[^>]+>(.+?)</span></h3>#g) {
		my $lang = $1;
		$lang =~ s/<[^>]+>//g;
		chomp $lang;
		$implement{$seite}{$lang} = 1;
		$progs{$lang} = 1;
	}
}

print <<EOF
{| class="wikitable" 
! Seite
EOF
;
print "! $_\n" for (keys %progs);

for $seite (keys %implement) {
	$link = $seite;
	$link =~ s#/wiki/##;
	$seite =~ m/:_([^:]+)$/;
	print "|-\n| [[$link|$1]]\n";
	for $prog (keys %progs) {
		if ($implement{$seite}{$prog}) {
			print "|X\n";
		}
		else {
			print "|\n";
		}
	}
}
print "|}\n";
print "\n";
print "Aktualisiert: ";
system("date");
print "\nZum Aktualisieren siehe [[Benutzer:Pberndt/Algorithmensammlung_Harvester/Quellcode]]";