perlでmediawikiの内容を更新

関連:zshからwgetを使ってpukiwikiの更新 - 最高のコンピューティング環境とは?

#!/bin/perl -w

use strict;
use LWP 5.64;
use HTML::TreeBuilder;
use Encode;
use HTTP::Cookies;

# config
my $wiki_url = 'http://10.0.0.10/mediawiki/index.php';
my $user_name = 'Neko2';
my $pass = 'your_password';
my $page = 'Neko3';

# 
my $browser = LWP::UserAgent->new;
$browser->cookie_jar({});

my $response;
my $content;

my $url      = $wiki_url . '?title=%E7%89%B9%E5%88%A5:%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3&action=submitlogin&type=login';
my %formdata = (
	'wpLoginattempt' => 'ログイン',
	'wpName' => $user_name,
	'wpPassword' => $pass
);

$response  = $browser->post($url, \%formdata);

$response = $browser->get($wiki_url . '?title=' . $page . '&action=edit');
$content = $response->content;

Encode::_utf8_on($content);	# set flag for warning 
my $html_tree = HTML::TreeBuilder->new_from_content($content);

sub get_value{
	my ($tag, $name) = @_;
	my $ele = ($html_tree->look_down(
		_tag => $tag,
		name => $name
	))[0];
	if ($tag eq 'textarea') {
		return encode('utf-8', $ele->as_text());
	} else {
		return encode('utf-8', $ele->attr('value'));
	}
}

%formdata = (
#	'wpTextbox1' => get_value('textarea', 'wpTextbox1'),
	'wpTextbox1' => 'nya3',
	'wpStarttime' => get_value('input', 'wpStarttime'),
	'wpEdittime' => get_value('input', 'wpEdittime'),
	'wpAutoSummary' => get_value('input', 'wpAutoSummary'),
	'wpSave' => get_value('input', 'wpSave'),
	'wpEditToken' => get_value('input', 'wpEditToken')
);

$response  = $browser->post($wiki_url . '?title=' . $page . '&action=submit', \%formdata);