Wikipedia:WikiProject help desk/20050709 Dmcdevit.pl

From Wikipedia, the free encyclopedia

Generates a list of all the articles from the rendered VfD page

#!/usr/bin/perl -w

use strict;

while (<>) {
        next unless /^\*(<s>)?\[\[(.+?)\]\]/;

        print $2, "\n";
}

Checks to see if a VfD page exists for a list of articles

#!/usr/bin/perl -w

use strict;
use LWP::UserAgent;
use URI::Escape;

my $pause = 1; #seconds between http fetches

$| = 1;

my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;

while(<>) {
        chomp;

        if (check('Wikipedia:Votes_for_deletion/' . uri_escape($_))) {
                print $_, "\n";
        }

        sleep($pause);
}

 #returns 1 if a wikipedia article exists at that name, 0 otherwise
sub check {
        my $name = shift;

        my $uri = 'http://en.wikipedia.org/wiki/' . $name;
        my $text;

        while(1) {
                my $resp = $ua->get($uri);

                if ($resp->is_success) {
                        $text = $resp->content;
                        last;
                } else {
                        print STDERR "WARNING: $uri failed: ";
                        print STDERR $resp->status_line, "\n";
                }

                sleep($pause);
        }


        return 1 if index($text, '<b>Wikipedia does not have an article with this exact name.</b>') == -1;
        return 0;
}

Adds the links to the wikitext of VfD if it is in the list specified

#!/usr/bin/perl -w

use strict;

my %has_vfd;

my $file = shift(@ARGV) or die "must specify file name";

open(FILE, $file) or die "could not open $file: $!";

while(<FILE>) {
        chomp;

        $has_vfd{$_} = 1;
}

close(FILE);

while(<>) {
        chomp;

        if (/^\*(<s>)?\[\[(.+?)\]\]/ && defined($has_vfd{$2})) {
                print $_, " ([[Wikipedia:Votes for deletion/$2|VfD]])";
        } else {
                print;
        }

        print "\n";
}