Content deleted Content added
Updating published sources: TaskRedirectChecker: * Canonicalize redirect titles |
Updating published sources: General: * Update for the addition of 'rvslots'. DatedCategoryDeleterTest: * Disable. It's clear that task won't be needed. BrokenRedirectDeleter: * Handle pages with newlines before the <code>#REDIRECT</code>. |
||
(9 intermediate revisions by 3 users not shown) | |||
Line 1:
{{ombox|type=notice|text= Per [[WP:BOT#Approval]], any bot or automated editing process that only affects only the operators' user and talk pages (or subpages thereof), and which are not otherwise disruptive, may be run without prior approval.}}
<
package tasks::TaskRedirectChecker;
Line 11:
BRFA: N/A
Status: Begun 2010-06-16
Created: 2010-06-16
Check the permanent redirects under [[Special:PrefixIndex/User:AnomieBOT/req/|User:AnomieBOT/req/]] to validate the anchor still exists in the target page. If the anchor can be found in an archive subpage, the redirect will be updated. Otherwise, the bot will ask for help on its talk page.
Note this doesn't handle {{tl|
=end metadata
Line 29 ⟶ 28:
@ISA=qw/AnomieBOT::Task/;
use Data::Dumper;
Line 66 ⟶ 64:
my $re=$api->redirect_regex();
my $base=$api->user.'/req/';
my $iter=$api->iterator(generator=>'allpages',gapprefix=>$base,gapnamespace=>2,gapfilterredir=>'redirects',prop=>'info|revisions',rvprop=>'content',rvslots=>'main');
my @whine=();
while(my $page=$iter->next){
Line 74 ⟶ 72:
}
my $txt=$page->{'revisions'}[0]{'slots'}{'main'}{'*'};
next unless $txt=~/$re\[\[([^]#]+)#([^]]+)\]\]/;
my ($title,$anchor)=($1,$2);
Line 90 ⟶ 88:
# because the encoded anchors returned in "sections" varies based on
# server settings. Note this doesn't support {{anchor}} or the like.
$res=$api->query(action=>'parse',title=>$title,text=>"__TOC__\n== XXX $anchor ==\n\n{{:$title}}",prop=>'sections');
if($res->{'code'} ne 'success'){
Line 97 ⟶ 96:
my @s=map $_->{'anchor'}, @{$res->{'parse'}{'sections'}};
my $anchorenc=shift @s; $anchorenc=~s/^XXX_//; # Pull out the dummy
▲ $anchorenc=~s/^XXX_//;
next if grep($_ eq $anchorenc, @s);
Line 112 ⟶ 110:
}
if(exists($res->{'query-continue'})){
$q{'
} else {
delete $q{'
}
Line 142 ⟶ 140:
last if defined($newtitle);
}
} while(!defined($newtitle) && exists($q{'
if(defined($newtitle)){
Line 191 ⟶ 189:
1;
</syntaxhighlight>
|