User:Polbot/source/Add rationales for logos.pl

From Wikipedia, the free encyclopedia

use strict;
use Perlwikipedia;

my $starter = shift;
my $soonest_next_op = time;

my $pw=Perlwikipedia->new();
$pw->{mech}->agent('Bot/WP/EN/Quadell/polbot');

print "\nStarting polbot, logging in.\n" ;
my $login_status=$pw->login('Polbot','password redacted');
die "I can't log in." unless ($login_status eq 0);

my $category_name = "Category:All non-free Logos";
print "Reading [[$category_name]]\n";
my @allimages = $pw->get_pages_in_category($category_name);
print "There are " . scalar(@allimages) . " total logos.\n\n";

foreach my $image (sort @allimages) {
        if ($image =~ m/^Image:/) {
                if ($image gt "Image:$starter") {
                        print "Looking at [[$image]]\n";
                        
                        my $wiki = $pw->get_text($image);
                        if ($wiki =~ m/{{(Non-free media rationale|Non-free use rationale|Fair use rationale|Non-free fair use rationale|Rationale|Logo fur|Non-free image data|Non-free image rationale)/i) {
                                print "  already has a rationale\n";
                        } else {
                                print "  No rationale\n";

                                my @whatlinkshereraw = ($pw->get_file_links("$image"));
                                my @whatlinkshere = ();
                                foreach my $what (@whatlinkshereraw) {
                                        if ($what !~ m/^(Image:|Image talk:|User:|User talk:)/) {
                                                push @whatlinkshere, $what;
                                        }
                                }
                                if (scalar(@whatlinkshere) == 1) {
                                        my $inarticle = $whatlinkshere[0];
                                        print "  One link: [[$inarticle]].\n";
                                        $wiki .= "\n{{Non-free use rationale\n| Article = $inarticle\n";
                                        $wiki .= "| Description = logo\n| Source = intellectual property owned by the organization represented\n";
                                        $wiki .= "| Portion = entire logo\n| Low_resolution = yes\n";
                                        $wiki .= "| Purpose = Used to represent the organization in an article on that organization.\n| Replaceability=no\n";
                                        $wiki .= "| other_information=This rationale '''only''' covers use in the article on this organization represented by this logo. Any other use requires a different, separate rationale.\n<small>This rationale was generated by a bot, based on the fact that this is tagged as a logo and is used only in the [[$inarticle]] article. If this is not correct, please remove.\n}}\n";
                                        
                                        $|=1;
                                        print "  Waiting " . ($soonest_next_op - time) . " secs... ";
                                        $|=1;
                                        while (time < $soonest_next_op) {};                          
                                        $soonest_next_op = time + 10;
                                        print "Adding rationale\n";
                                        $pw->edit($image, $wiki, "Adding rationale for use of logo in [[$inarticle]]");

                                } else {
                                        print "  <> 1 link\n";
                                }
                        }
                }
        }
}

print "Done!\n";