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);