User:AnomieBOT/source/tasks/TaskRedirectChecker.pm: Difference between revisions

Content deleted Content added
AnomieBOT (talk | contribs)
Updating published sources: AnomieBOT::Task: * Allow for easy exporting of POSIX::strftime, Time::Local::timegm, and Time::Local::timelocal. * Remove unneeded "use" directives. All tasks, where applicable: * Use the new exports instead of directly us
AnomieBOT (talk | contribs)
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>.
 
(6 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.}}
<sourcesyntaxhighlight lang="perl">
package tasks::TaskRedirectChecker;
 
Line 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 72:
}
 
my $txt=$page->{'revisions'}[0]{'slots'}{'main'}{'*'};
next unless $txt=~/$re\[\[([^]#]+)#([^]]+)\]\]/;
my ($title,$anchor)=($1,$2);
Line 88:
# because the encoded anchors returned in "sections" varies based on
# server settings. Note this doesn't support {{anchor}} or the like.
$anchorencanchor =~ s/^XXX_\{/&#x7B;/g;
$res=$api->query(action=>'parse',title=>$title,text=>"__TOC__\n== XXX $anchor ==\n\n{{:$title}}",prop=>'sections');
if($res->{'code'} ne 'success'){
Line 95 ⟶ 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 110:
}
if(exists($res->{'query-continue'})){
$q{'rvstartidrvcontinue'}=$res->{'query-continue'}{'revisions'}{'rvstartidrvcontinue'};
} else {
delete $q{'rvstartidrvcontinue'};
}
 
Line 140:
last if defined($newtitle);
}
} while(!defined($newtitle) && exists($q{'rvstartidrvcontinue'}));
 
if(defined($newtitle)){
Line 189:
1;
 
</syntaxhighlight>
</source>