User:ImageRemovalBot/removebot-badlinks.pl

ImageRemovalBot's code for removing invalid file links. Requires User:FairuseBot/Pearle.pm, User:FairuseBot/Pearle/WikiPage.pm and User:FairuseBot/libBot.pm.


 * 1) !/usr/bin/perl


 * 1) RemoveBot-badlinks
 * 2) A bot to remove bad image links (eg. 'File:http://' or 'File:C:\')
 * 1) A bot to remove bad image links (eg. 'File:http://' or 'File:C:\')

use strict; use warnings;

use lib '/home/bot/perllib';

use libBot;


 * 1) exit;

my $test = 0;

my $homedir = '/home/bot/removebot';

Pearle::init("ImageRemovalBot", "", "$homedir/removebot-badlinks.log","$homedir/cookies-badlinks.txt"); Pearle::config(nullOK => 1, printlevel => 4, loglevel => 2); config(username => "ImageRemovalBot");

if(!Pearle::login) {	exit; }

{	my @articles; my $image; my $images_removed = 0; Pearle::myLog(2, "Beginning set at " . time . "\n");

# Get the list of pages with redlinked images if($test) {		@articles = ("User:Carnildo/sandbox4", "Hussain Sagar"); }	else {		@articles = Pearle::getCategoryArticles('Category:Articles with missing files'); }

if(scalar(@articles) == 0) {		Pearle::myLog(2, "No files in category.\n"); exit; }	Pearle::myLog(4, join("\n", @articles) . "\n"); Pearle::myLog(2, scalar(@articles) . " pages found\n"); foreach my $article (@articles) {		my $image_regex; my $full_comment = ""; my $removal_prefix = undef; my $removal_comment = "Removing external link used as image"; my @images = Pearle::getPageImages($article); @images = grep {$_ =~ /(?:File:Https?:\/\/|File:(?:C|D):\\)/} @images; if(scalar(@images) == 0) {			Pearle::myLog(4, "Article $article has no URL images.\n"); next; }		Pearle::myLog(3, "External-linked images: ", join(", ", @images), "\n"); foreach my $image (@images) {			my ($raw_image) = $image =~ /(?:Image|File):(.*)/; $raw_image = MakeWikiRegex($raw_image);

$image_regex = "[ _]*(?:[Ii][Mm][Aa][Gg][Ee]|[Ff][Ii][Ll][Ee])[ _]*:[ _]*${raw_image}[ _]*";

# Sanity check if(!defined($raw_image) or $image !~ /$raw_image/) {				botwarnlog("\n*Parse error on image $image ($raw_image)"); exit; }			Pearle::myLog(3, "Image regex: $image_regex\n"); eval {				my $hits = 0; Pearle::myLog(3, "Page for removal: $article\n"); if($hits = RemoveImageFromPage($image, $article, $image_regex, $removal_prefix, $removal_comment)) 	# Don't limit if we just touched the article {					Pearle::myLog(2, "Removed external link from article $article ($hits times)\n"); Pearle::limit; }				$images_removed += $hits; };			if($@) {				if(925 == $@) {					botwarnlog("\n*Page $article is protected removing external link."); }				else {					die; }			}		}	}	Pearle::myLog(2, "Finished with set. Removed $images_removed images.\n"); }