User:DeadLinkBOT/source

use Perlwikipedia;

my $user = 'DeadLinkBOT'; my $pass = 'XXX';

my $editor=Perlwikipedia->new($user);

$editor->login($user, $pass);

open (INF, "ReadyLinks.lst");

@data = ;

close(INF);

foreach $line (@data) {

chomp($line);

undef(@cond);

undef(@newtext);

($oldlink, $mode, $cond[0], $newtext[0], $cond[1], $newtext[1], $cond[2], $newtext[2], $cond[3], $newtext[3], $cond[4], $newtext[4], $cond[5], $newtext[5]) = split(/\|\|/, $line);

$res = $editor->_get( 'Special:LinkSearch', 'view', "&target=$oldlink&limit=10" );

$content = $res->decoded_content;

while ($content =~ m{from }g) {

($title, $junk) = split(/Archive/, $1);

if ($junk eq "") { push(@articles, $title); }

}

foreach $title (@articles) {

$text = $editor->get_text($title);

$start = time;

$replace = "";

$c = 0;

while ($c <= 5) {

($type, $regrex, $regrex2) = split(/==/, $cond[$c]);

if ($type eq "*") {

$replace = $newtext[$c];

last;

}

elsif ($type eq "InTitleAndText") {

if (($title =~ m/$regrex/) && ($text =~ m/$regrex2/)) {

$replace = $newtext[$c];

last;

}

}

elsif ($type eq "InTitle") {

if ($title =~ m/$regrex/) {

$replace = $newtext[$c];

last;

}

}

elsif ($type eq "NotInTitle") {

if ($title !~ m/$regrex/) {

$replace = $newtext[$c];

last;

}

}

elsif ($type eq "InText") {

if ($text =~ m/$regrex/) {

$replace = $newtext[$c];

last;

}

}

elsif ($type eq "NotInText") {

if ($text !~ m/$regrex/) {

$replace = $newtext[$c];

last;

}

}

elsif ($type) {

print "invalid condition type '$type' found in link '$oldlink' - trying next condition (if available)";

}

$c++;

}

if ($replace) {

$oldtext = $text;

$replace =~ s/\\n/\n/g;

if ($mode == 1) {

$text =~ s/$oldlink/$replace/g;

}

elsif ($mode == 2) {

$text =~ s/\[?$oldlink.*?\]/$replace/g;

$text =~ s/$oldlink/$replace/g;

}

else {

print "article '$title' skipped due to invalid mode";

$mode = 999;

}

if ($text eq $oldtext) {

if ($mode != 999) { print "article '$title' skipped due to no changes made ('$oldlink' -> '$replace')"; }

}

else {

$lapsed = time - $start;

if ($lapsed > 5) { $lapsed = 5; }

sleep(5 - $lapsed);

$start = time;

$title =~ s/[:\/()]/-/g;

open (OUTF, ">$title.new.txt");

print OUTF $text;

close OUTF;

$lapsed = time - $start;

if ($lapsed > 5) { $lapsed = 5; }

sleep(5 - $lapsed);

$start = time;

}

}

else {

print "article '$title' skipped due to no matching conditions for link '$oldlink'";

}

}

}