コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

利用者:Mzm5zbC3/ボット

ウィキペディアMediaWiki におけるボットとは機械的に記事やページの自動投稿/編集を行うスクリプトなどのプログラムのこと。詳細は Wikipedia:Bot も参照のこと。

日本語情報がまったくといっていいほど無いため、日本語による説明やサンプルスクリプトを掲載予定です。なお、ぼくが Perl くらいしか分からないため、サンプルも必然的に Perl スクリプトになります。さらに、実際に動かしたりしてテストしていないので動作保証はありません。サンプルの使用などは自由ですが自己責任でお使い下さい。

使用方法

[編集]

手動で実行するか、定期的に動作させたいなら cron(?) などのデーモンプロセスに常駐させてスケジュール実行してください。

サンプル

[編集]

サンプルは必ず、 UTF-8 で保存してください。ただし、投稿する内容に日本語などのマルチバイト文字が含まれず、 ASCII のみだったら不要です。

CMS-MediaWiki という Perl モジュールを使用しています。

簡単なベース

[編集]
use CMS::MediaWiki;
use Encode;

# CMS::MediaWiki オブジェクトを作成
my $mw = CMS::MediaWiki->new(
	# 'protocol' => 'https',  # プロトコル、デフォルトは http
	'host'      => 'ja-two.iwiki.icu',   # Wikipedia のドメイン
	'path'      => 'w' ,       # Wikipedia のパス
);

# Wikipedia にログインする
if ($mw->login(user => 'ユーザー名', pass => 'パスワード')) {
	# ログインに失敗した場合
	# ('shiftjis' は OS が表示できる文字コードに修正)
	print STDERR encode('shiftjis', decode('utf-8', "ログインできませんでした。\n"));
	exit;
} else {
	# ログインが成功した場合
	print encode('shiftjis', decode('utf-8', "ログイン成功\n"));
}

# ページの内容を取得(ページの存在チェックはしていない)
my $lines_ref = $mw->getPage(
	title => '取得するページ名',
	section => 0  # 節を指定(全部取得する場合は 0)
);
# ページの全行取得 ...
my $text = '';
$text .= "$_\n" foreach(@$lines_ref);

# タグはエンコードされているのでデコードする
$text =~ s/"/\"/g;
$text =~ s/>/>/g;
$text =~ s/&lt;/</g;
$text =~ s/&amp;/&/g;

# 投稿する
my $rc = $mw->editPage(
	'title'   => '投稿するページ名' ,
	'section' => '' , #  節
	'text'    => "$text", # 内容
	'summary' => '要約' , # 省略可能ですができるだけ指定を推奨
);
exit;

他のページの内容をそのまま投稿する

[編集]

ちーぼっとのようにTemplate:サンドボックスの初期化の内容でWikipedia:サンドボックスを上書きする。

use CMS::MediaWiki;
use Encode;

# CMS::MediaWiki オブジェクトを作成
my $mw = CMS::MediaWiki->new(
	# 'protocol' => 'https',  # プロトコル、デフォルトは http
	'host'      => 'ja-two.iwiki.icu',   # Wikipedia のドメイン
	'path'      => 'w' ,       # Wikipedia のパス
);

# Wikipedia にログインする
if ($mw->login(user => 'ユーザー名', pass => 'パスワード')) {
	# ログインに失敗した場合
	# ('shiftjis' は OS が表示できる文字コードに修正)
	print STDERR encode('shiftjis', decode('utf-8', "ログインできませんでした。\n"));
	exit;
} else {
	# ログインが成功した場合
	print encode('shiftjis', decode('utf-8', "ログイン成功\n"));
}

# ページの内容を取得(ページの存在チェックはしていない)
my $lines_ref = $mw->getPage(
	title => 'Template:サンドボックスの初期化',
	section => 0  # 節を指定(全部取得する場合は 0)
);
# ページの全行取得 ...
my $text = '';
$text .= "$_\n" foreach(@$lines_ref);

# タグはエンコードされているのでデコードする
$text =~ s/&quot;/\"/g;
$text =~ s/&gt;/>/g;
$text =~ s/&lt;/</g;
$text =~ s/&amp;/&/g;

# 投稿する
my $rc = $mw->editPage(
	'title'   => 'Wikipedia:サンドボックス' ,
	'section' => '' , #  節
	'text'    => "$text", # 内容
	'summary' => 'ボットによる投稿' , # 省略可能ですができるだけ指定を推奨
);
exit;

その他

[編集]
  1. 自作のボットスクリプト投稿も受け付けています
    1. ただし、以下のスクリプトの投稿はご遠慮下さい
      1. 自分に著作権のないスクリプト
      2. Wikipedia に関係のないスクリプト
    2. 掲載されたスクリプトは誰でも使用・修正可能になります
  2. 問題などが指摘された場合はページ自体が削除されるかも知れません

モジュール

[編集]