moving dokuwiki pages with perl
wir strukturieren gerade das webmontag.de-wiki um. dabei sind hunderte von seiten umzuziehen, was langeweile und RSI nach sich ziehen kann. es sei denn, man benutzt perl::mechanize, das in kombination mit dem pagemove-plugin die arbyte erledigen kann.
#!/usr/bin/perl
use strict;
use WWW::Mechanize;
use WWW::Mechanize::FormFiller;
use URI::URL;
# list with page names
my @urls = `cat liste.txt`;
my $agent = WWW::Mechanize->new( autocheck => 1 );
my $formfiller = WWW::Mechanize::FormFiller->new();
$agent->env_proxy();
$agent->get('http://webmontag.de/index?do=login');
$agent->form_number(5) if $agent->forms and scalar @{ $agent->forms };
$formfiller->add_filler( 'u' => Fixed => 'admin' );
$formfiller->add_filler( 'p' => Fixed => 'pass' );
$formfiller->fill_form( $agent->current_form );
$agent->submit();
foreach (@urls) {
# e.g. 05.03.2007_hamburg
print $_;
( my $d, my $m, my $j, my $o ) = m/(\d\d)\.(\d\d)\.(\d\d\d\d)_(.*)/;
print $d, $m, $j, $o, "\n";
$agent->get( "http://webmontag.de/" . $_ . "?do=admin&page=pagemove" );
$agent->form_number(5) if $agent->forms and scalar @{ $agent->forms };
$formfiller->fill_form( $agent->current_form );
$formfiller->fill_form( $agent->current_form );
$formfiller->add_filler( 'nsr' => Fixed => '
$formfiller->add_filler( 'ns' => Fixed => ':' );
$formfiller->add_filler( 'newns' => Fixed => 'location:' . $o );
$formfiller->add_filler( 'pagename' => Fixed => $j . "-" . $m . "-" . $d );
$formfiller->fill_form( $agent->current_form );
$agent->submit();
}