<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://crawl.chaosforge.org/index.php?action=history&amp;feed=atom&amp;title=User%3ACommanderC%2Fbook-fix.pl</id>
		<title>User:CommanderC/book-fix.pl - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://crawl.chaosforge.org/index.php?action=history&amp;feed=atom&amp;title=User%3ACommanderC%2Fbook-fix.pl"/>
		<link rel="alternate" type="text/html" href="http://crawl.chaosforge.org/index.php?title=User:CommanderC/book-fix.pl&amp;action=history"/>
		<updated>2026-04-09T04:16:34Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://crawl.chaosforge.org/index.php?title=User:CommanderC/book-fix.pl&amp;diff=10982&amp;oldid=prev</id>
		<title>CommanderC: Created page with &quot;&lt;pre&gt; &lt;nowiki&gt; #!/usr/bin/perl  # Set the pause in seconds after each upload my $pause = 1;  # List the wiki PHP scripts where you have the username/password pair my $api_url = '...&quot;</title>
		<link rel="alternate" type="text/html" href="http://crawl.chaosforge.org/index.php?title=User:CommanderC/book-fix.pl&amp;diff=10982&amp;oldid=prev"/>
				<updated>2013-04-25T18:31:13Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;pre&amp;gt; &amp;lt;nowiki&amp;gt; #!/usr/bin/perl  # Set the pause in seconds after each upload my $pause = 1;  # List the wiki PHP scripts where you have the username/password pair my $api_url = &amp;#039;...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
# Set the pause in seconds after each upload&lt;br /&gt;
my $pause = 1;&lt;br /&gt;
&lt;br /&gt;
# List the wiki PHP scripts where you have the username/password pair&lt;br /&gt;
my $api_url = 'http://crawl.chaosforge.org/api.php';&lt;br /&gt;
my $upload_url = 'http://crawl.chaosforge.org/Special:Upload';&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
use MediaWiki::API;&lt;br /&gt;
use File::Spec;&lt;br /&gt;
use IO::Dir;&lt;br /&gt;
use IO::Prompt;&lt;br /&gt;
&lt;br /&gt;
my $username = prompt('Username:');&lt;br /&gt;
my $password = prompt('Password:', -e =&amp;gt; '*');&lt;br /&gt;
&lt;br /&gt;
my $mw = MediaWiki::API-&amp;gt;new( {&lt;br /&gt;
    api_url =&amp;gt; $api_url,&lt;br /&gt;
    upload_url =&amp;gt; $upload_url,&lt;br /&gt;
    on_error =&amp;gt; \&amp;amp;on_error&lt;br /&gt;
  } );&lt;br /&gt;
&lt;br /&gt;
sub filter_articles {&lt;br /&gt;
    my $articles = shift;&lt;br /&gt;
    my @reject1 = ('Spell book', 'Starting books');&lt;br /&gt;
    my $r = [];&lt;br /&gt;
&lt;br /&gt;
    foreach (@{$articles}) {&lt;br /&gt;
        my $title = $_-&amp;gt;{title};&lt;br /&gt;
        if (contains($title, \@reject1)) {next;}&lt;br /&gt;
        if (substr($title, 0, 8) eq 'Category') {next;}&lt;br /&gt;
        push @$r, $_;&lt;br /&gt;
    }&lt;br /&gt;
    return $r;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub handle_text {&lt;br /&gt;
    my $text = shift;&lt;br /&gt;
    $text =~ s/{{item\n/{{item-noicon\n/m;&lt;br /&gt;
    return $text; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub handle_article {&lt;br /&gt;
    my $article = shift;&lt;br /&gt;
    my $pagename = $article-&amp;gt;{title};&lt;br /&gt;
    my $ref = $mw-&amp;gt;get_page( { title =&amp;gt; $pagename } );&lt;br /&gt;
    unless ( $ref-&amp;gt;{missing} ) {&lt;br /&gt;
        my $text = $ref-&amp;gt;{'*'};&lt;br /&gt;
        my $new_text = handle_text($text);&lt;br /&gt;
        my $timestamp = $ref-&amp;gt;{timestamp};&lt;br /&gt;
        $mw-&amp;gt;edit( {&lt;br /&gt;
          action =&amp;gt; 'edit',&lt;br /&gt;
          title =&amp;gt; $pagename,&lt;br /&gt;
          basetimestamp =&amp;gt; $timestamp, # to avoid edit conflicts&lt;br /&gt;
          text =&amp;gt; $new_text } )&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub contains {&lt;br /&gt;
    my ($el, $arr) = @_;&lt;br /&gt;
    for (@$arr) {&lt;br /&gt;
        if ($el eq $_) {return 1;}&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub on_error {&lt;br /&gt;
  print &amp;quot;Error code: &amp;quot; . $mw-&amp;gt;{error}-&amp;gt;{code} . &amp;quot;\n&amp;quot;;&lt;br /&gt;
  print $mw-&amp;gt;{error}-&amp;gt;{stacktrace}.&amp;quot;\n&amp;quot;;&lt;br /&gt;
  die;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
my $r = $mw-&amp;gt;login( { lgname =&amp;gt; $username, lgpassword =&amp;gt; $password } );&lt;br /&gt;
die unless defined($r);&lt;br /&gt;
&lt;br /&gt;
my $articles = $mw-&amp;gt;list ( {&lt;br /&gt;
    action =&amp;gt; 'query',&lt;br /&gt;
    list =&amp;gt; 'categorymembers',&lt;br /&gt;
    cmtitle =&amp;gt; 'Category:Book',&lt;br /&gt;
    cmlimit =&amp;gt; 'max' } );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
my $filtered_articles = filter_articles($articles);&lt;br /&gt;
&lt;br /&gt;
for (sort(@$articles)) {&lt;br /&gt;
        #sleep $pause;&lt;br /&gt;
        handle_article($_);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$mw-&amp;gt;logout();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>CommanderC</name></author>	</entry>

	</feed>