User:Cyde/Featured pictures/Source

From Wikipedia, the free encyclopedia

Usage is as follows:

./wikipics.pl > output.txt

Then just go ahead and copy the contents of output.txt directly into the Edit Box on Wikipedia.

Current version is 0.4

#!/usr/bin/perl
#You will need libwww-perl, available at:
#http://search.cpan.org/~gaas/libwww-perl-5.805/

require LWP::UserAgent;

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

#We need to spoof the user agent or Wikipedia will block us :-O
$ua->agent('Mozilla/5.0');

my $response = $ua->get("http://en.wikipedia.org/w/index.php?title=Wikipedia:Featured_pictures&action=raw&ctype=text/css");

if (!$response->is_success) {
    die $response->status_line;
}

print "Here is a list of all Featured Pictures as of " . localtime() . ".  This was generated by a simple \[\[Perl\]\] script that I ran on the Wiki source of the \[\[Wikipedia:Featured pictures\]\] page.  The Perl script's source is available \[\[User:Cyde/Featured pictures/Source | here\]\].\n\n";

print "\'\'Warning\'\' - If you have a slow computer or a slow connection trying to load this page will make your computer choke.\n\n";

my $galleryOpen = 0;

foreach (split /\n/, $response->content) {
    if ($_ =~ /\[\[\:(Image\:.*\.(?:jpg|gif|png))\|.*\]\]/i) {
        print $1 . "\n";
    }
    elsif ($_ =~ /^\s*(===*.*===*)\s*$/) {
        my $temp = $1;
        if ($temp =~ /^==[^=]*==$/) {
            print "$temp\n";
        }
        else {
            if ($galleryOpen == 1) {
                print "</gallery>\n";
                $galleryOpen = 0;
            }
            print "$temp\n";
            print "<gallery>\n";
            $galleryOpen = 1;
        }
    }
}

print "</gallery>\n" if ($galleryOpen);

This program is licensed under the GPL as follows:

Copyright (C) 2005–2006 Ben "Cyde" McIlwain

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.