Help:Pywikipediabot
出典: フリー百科事典『ウィキペディア(Wikipedia)』
In other languages: de - en - fr - hu - it - ja - ko - nl - pl - pt - ru - sv - zh-hant
このページは日本語版ウィキペディアのヘルプページです。
- pywikipediabotを準備するのに手助けがほしいなら#pywikipediabot @ freenode serverにくるかpywikipediabot mailing listを使ってください。
Pywikipediabot (Python Wikipedia Robot Framework) は、ウィキペディアなどのウィキメディア財団のプロジェクトのためのBotスクリプトのセットです。多くの開発者によってPython言語で記述されています。このページでは、Botソフトウェアを使用したい人のための一般的な情報を提供します。
目次 |
[編集] セットアップ
[編集] Pythonのインストール
pywikipediaを使うためには、Pythonバージョン2.4以上が必要です。Pythonバージョン2.3で動くコードも多いですが、2.3での動作確認は行われていません。
Pythonは、ほとんどのプラットフォーム(Unix、Linux、Mac、Windows)で使えます。
- WindowsにはActivePythonが便利です。ただしやや遅いです。ここからダウンロードできます。
- Unixには最初からPythonがインストールされているので、インストールする必要はありません(ただし、非常に古いバージョンのUnixの場合には、Pythonがインストールされていなかったり、Pythonのバージョンが古かったりする場合があります。その場合にはアップデートが必要です)。
- MacでMac OS Xを使っている場合は、インストールの必要はありません。
- その他の場合、あるいはインストールされているバージョンが古い場合には、http://www.python.org/download/ からダウンロードしてインストールしてください。
[編集] pywikipediaのダウンロード
最も簡単な方法は、PyWikipediaBot PyWikipediaBot Nightliesの「pywikipedia - The packages」からダウンロードすることです(ただしこのファイルは前日の時点での最新版です)。古いバージョンが必要な場合はSourceforgeからダウンロードできます。ダウンロードしたファイルを展開します。展開する場所は、できるだけ浅い位置のディレクトリが便利でしょう。
Mac OS Xの場合には、ここにある説明をお読み下さい。ファイルはここからダウンロードできます。"Check out"でコピーが可能です。
[編集] SVNを使ったダウンロード
(上記の前日の時点の最新バージョンではなく)最新のバージョンをダウンロードしたい場合には、SVNが便利です。SVNを使うと、日頃のバージョンアップも非常に簡単です。多くのUnixにはSVNが標準でインストールされています。Windowsの場合は TortoiseSVNを利用しましょう。Mac OS Xの場合はこの説明を読んでください。
Unixなどで、コマンドラインを使ってBotをチェックアウト(ダウンロード)するには、以下のコマンドを使用します:
$ svn checkout http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/ pywikipedia
次のようにファイルのスペルチェックを無効にすると時間短縮になります:
$ svn checkout --ignore-externals http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/ pywikipedia
上のコマンドを実行すると、カレント作業ディレクトリ(Unixではpwdコマンドか変数$PWDで確認、Cygwinなど他の環境では環境設定で確認できます)に「pywikipedia」という名前で新しいディレクトリが作成されます。
コマンドラインを使ってダウンロードしたファイルを後日アップデートするには、作業ディレクトリをpywikipediaに移動してから、以下を打ちます。
$ svn update
TortoiseSVNなど、コマンドラインツール以外では必要な情報はリポジトリのパスのみです:http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/
[編集] Botのメーリングリスト
Botメーリングリストに登録するのは、良い考えでしょう(http://lists.wikimedia.org/mailman/listinfo/Pywikipedia-l を参照)。Botソフトウェアのファイルが更新されるたびにリストにメールが送られるので、新しいバージョンにアップデートする必要があるかどうか確認できます。
[編集] アカウント取得とuser-config.pyの設定
Botフレームワークがサポートしているスキンは、Monobookのみです。デフォルトから変更しないようにしましょう。
[編集] ボット用アカウントの作成
大規模な編集を行う場合は、Botのアカウントは通常の利用者と区別するため、専用のアカウントを取得しなければなりません。これは、Botフラグを付与することで最近更新されたページからBotの編集を隠すためです。ウェブブラウザを使ってあなた自身が手動で取得してください。利用者名は、通常「bot」の文字が後ろに付けられることが推奨されます。パスワードはあなた自身のアカウントと別のものがよいでしょう。
[編集] user-config.pyの設定(ウィキペディア向け)
メモ帳などのテキストエディタを開きます。
以下のように打ちます:
mylang = 'xx'
xx には、動作させる言語コードが入ります。日本語版では、"ja"が入ります。
このテキストファイルをuser-config.pyという名前で、ダウンロードしたpyファイルと一緒のフォルダに保存します。
複数の言語で動作させたいなら、コマンドライン引数の-langパラメータで指定できるので、ここでは最もよく使う言語コードを指定しましょう。
user-config.pyでは、Botの利用者名を指定する必要があります。
ウィキペディア日本語版で動作させるとします。「ExampleBot」という利用者名でBotのアカウントを取得しているならば、以下のようにuser-config.pyに追記します。
usernames['wikipedia']['ja'] = u'ExampleBot'
利用者名の前の'u'は、Unicodeを表しています。それは、利用者名にASCII以外の文字を含むなら重要なことです。ASCII文字のみが含まれているならば'u'を削除することが出来ます。これだけでは、トラブルが発生するかもしれません。複数のwikiで動作させたいなら、以下のように複数の利用者名を指定できます。
usernames['wikipedia']['de'] = u'BeispielBot' usernames['wikipedia']['en'] = u'ExampleBot' usernames['wiktionary']['de'] = u'BeispielBot'
管理者の権限を必要のスクリプト(speedy_delete.py、redirect.py brokenなど)は、以下のように管理者権限アカウントを追記します。
sysopnames['wikipedia']['ja'] = u'SysopName'
当面は安全のため、ボットの速度を落としましょう。「user-config.py」に「put_throttle = 30」(または30以上)という行を追加しましょう。これはPywikipediaBotの最低書き込み間隔の秒数で、数値が大きいほど遅く、すなわちサーバーへの負荷が小さくなります。デフォルトは10です。なお、ウィキペディア日本語版では、原則としてこの秒数を10秒未満に設定して運用することはできません。なお、デフォルト値は「config.py」で定義されていますが、これを直接書き換えるとSVNでのアップデートで支障が出ることがあるため、お勧めできません。
もう一度、ファイルを保存します。
[編集] user-config.pyの設定(その他のウィキページ向け)
メモ帳などのテキストエディタを開きます。
以下のように打ちます:
mylang = 'xx'
xx には、動作させる言語コードが入ります。日本語では、"ja"が入ります。
次に以下のように打ちます:
family = 'sitename'
"sitename"は、動作させるサイト名です。
wiktionary、wikibooks、wikiquoteなどやウィキメディア・プロジェクトではないwikitravelなども指定できます。(familiesフォルダに一覧があります。)
Wikimedia Commonsで動作させるなら、"mylang"と"family"に'commons'を指定します。
mylang='commons' family='commons' usernames['commons']['commons']='UserBot'
ウィキがfamilyフォルダのリストにないなら、自分で作成します。 meta:Pywikipedia bot on non-Wikimedia projectsを参照
user-config.pyには、Botの利用者名を指定する必要があります。
Memory Alphaの英語版で動作させるとします。「ExampleBot」という利用者名でBotのアカウントを取得しているならば、以下のようにuser-config.pyに追記します:
usernames['memoryalpha']['en'] = u'ExampleBot'
要約するとuser-config.pyには、3行の設定が必要です。以下は、memoryalphaのための例:
mylang = 'en' family = 'memoryalpha' usernames['memoryalpha']['en'] = u'ExampleBot'
このテキストファイルをuser-config.pyという名前で、ダウンロードしたpyファイルと一緒のフォルダに保存します。
[編集] 命令実行のショートカット作成(Windowsユーザ向け)
Pywikipediabotをマイドキュメントのような階層の深いフォルダにインストールしているなら、Botを動作させるたびにcdコマンドでフォルダに移動するのは、非常に厄介な作業です。
Windowsでは、簡単にBotを動作させるためにコマンドプロンプトを開くショートカットを作成することができます。 以下のステップに従って作成します:
- pywikipediaがインストールされているフォルダを開く。
- 右クリックのメニューから「新規作成 -> ショートカット」をクリックする。
- "cmd.exe"を入力して、「次へ」をクリックする。
- ショートカット名には"Pywikipediabot"など相応しい名前を入力する。
- 作成したショートカットを右クリックしてメニューを表示して、「プロパティ」をクリックします。
- 「ショートカット」タブの「作業フォルダ」の項目に、Pywikipediabotがインストールされたディレクトリへの絶対パスを記述します。
- 変更を保存して、ショートカット作成の完了です。
また、Pythonのパスも追加しておきましょう(例えばPythonを「C:\Python」にインストールした場合、Windows XPの場合は「コントロールパネル」→「システム」→「詳細設定」→「環境変数」と進んで、「システム環境変数」の変数「Path」を「編集」で開いて、元の文字列の末尾に「;C:\Python」と追加します)。
[編集] 使い方
以上の手順でBotを使用する準備が出来ました。Botの実行には、OSのコマンドラインを使用します。
- Windowsでは、コマンドプロンプト(cmd.exe)を使います。
- Macでは、/Applications/UtilitiesにインストールされているTerminal.appを使います。
- LinuxまたはUnix系OSでは、gnome-terminal、Konsole、xterm、テキストモードコンソールなど何を使ってもいいです。
まず、Pywikipediabotをインストールしたディレクトリにコマンドで移動します。
cd pywikipedia
[編集] 動作確認
まずは正しくインストールされているかどうかを確認するため、既存のプログラムを走らせて見ましょう。この段階では使用申請は必要ありません。
- ボットをウィキペディアにログインさせるだけのプログラムです。ログインするプロジェクトとログイン名は先ほど作った「user-config.py」から自動で読み込まれます。パスワードはプログラム実行後に手で入力します。Botは、通常ログアウトされることがないので、パスワードを変更しない限りこのプログラムをもう一度実行する必要はありません。
python login.py
- なお、使用申請していませんので、次のような警告がでるはずですが、今のところは気にする必要はありません。
Checked for running processes. 1 processes currently running, including the current process. Password for user XXXXXX on wikipedia:ja: Logging in to wikipedia:ja as XXXXXX WARNING: Your account on wikipedia:ja does not have a bot flag. Its edits will be visible in the recent changes and it may get blocked. Should be logged in now
- ログイン中のウィキ・ファミリーの名前と自分のアカウント名を調べてコンソールに出力します。
python test.py
- 先ほどの警告に加えて、次のように出力されます。
You are logged in on wikipedia:ja as XXXXXX.
- サンドボックスの初期化
- Wikipedia:サンドボックスを初期化します。なおこれは編集行為ですので、編集履歴がウィキペディアに残ります。
python clean_sandbox.py
- 先ほどの警告に加えて、次のように出力されます。サーバーと交信するため、やや時間がかかります。
Sleeping for 7.1 seconds, 2009-02-17 22:49:24 Changing page [[Wikipedia:サンドボックス]] Done.
[編集] 使用申請
詳細は「Wikipedia:Bot」を参照
Botを運用するためには、コミュニティに許可を得る必要があります。許可の基準の厳しさはプロジェクトによって異なります。何の許可もなく自由に運用できるプロジェクトもありますが、ウィキペディア日本語版では試験運用を行い有用で無害であることを証明して許可を得る必要があります。
[編集] スクリプト
現在利用できるBotのリストと解説ページへのリンク:
[編集] コマンドライン引数
ほとんどのBotスクリプトには独自のコマンドライン引数があり、それぞれのページまたはソースコード上で説明されています。反対に特筆が無い限り以下のコマンドライン引数は、全てのBotに存在します。
- -help
- 共通のBot引数のリスト(このリスト)と、Bot特有のヘルプが表示されます。
- -lang:xx
- 動作させる言語コードを
xxで指定します。user-config.pyでの設定より優先されます。 - -family:xyz
- wikipedia、wiktionary、wikitravelなど動作させるウィキの種類を指定します。
user-config.pyでの設定より優先されます。 - -log
- ログファイル出力を有効にします。ログはlogsディレクトリに保存されます。
- -log:xyz
- ログファイル出力を有効にします。ファイル名に
xyzが使われます。 - -nolog
- ログファイル出力を無効にします。
- -putthrottle:nn
- Botがページ編集を保存してから、次の編集まで待機する時間を秒数で指定します。デフォルト値は0です。
例えば、python [スクリプト名].py -family:wikipediaで[スクリプト名]Botをウィキペディアで動作させます。user-config.pyでの設定より優先されます。
[編集] バグ報告
バグ報告する時は、以下の内容を含めること:
- 使用しているPyWikipediaBotのバージョン。最新のSVN改訂においてまだバグが存在するか確認することが推奨される。
- 使用しているPython (python -v) のバージョンとWindows、Linux、Mac OS XなどのOS。
- 正確な概要。
- 問題と報告の完全な記述をする。
- 使用したスクリプト、サイト名、言語などバグを再現するための詳細情報。
- ログ出力。
新しいバグを報告は、SourceForgeのbug trackerで行います。
[編集] 開発
もし、あなたがBotに、従来のBotには無い新機能を付けたいと思ったなら、誰かプログラマーに頼んでその機能を実装して貰うことが出来ます。或いは自分でBotを改造出来るなら、その方が良いでしょう。Pythonは良くできたプログラミング言語ですし、習得は難しくありません。あなたも挑戦してみましょう。
[編集] Tips
このHelp:Pywikipediabotのページと、meta:wikipedia.pyのページには、あなたが自分のBotを書くに当たって、とても基本的なヒントの数々が記されています。
- あなたのBotのuser-config.pyの設定を確認してください(#Configuring for Wikipediaも参照してください)
- 以下のようにしてpywikipedia frameworkをインポートしてください:。
import wikipedia
- ページを取得するには次のようにしてください。pageNameのところには例えば、"Wikipedia:Bots"や"India"が入ります。
site = wikipedia.getSite() page = wikipedia.Page(site, u"pageName") text = page.get(get_redirect = True)
- ページを書き換えるには次のようにします。
page.put(u"newText", u"Edit comment")
- pywikipediaのファイルを見ると、様々な手法が見つけられます。replace.pyはpywikipedia入門者にとっても、読むのが比較的簡単でしょう。
- 使用可能なPageメソッドは全てwikipedia.pyのファイルに記載されています。
- 他の多くのBotでも利用されているbasic.pyを使うなら、ページの文章をどう編集するかを定義するだけで利用することが出来ます。
- 反復処理を行うことで(ループ (プログラミング)やイテレータを参照)、複数のページに対して処理を行うことが出来ます。pagegenerators.pyを見て、複数のページを返すオブジェクトを確認してください。例えば、CategoryPageGeneratorを使って、のカテゴリの中の各ページに対して何かをするには、次のようにします。
import catlib import pagegenerators site = wikipedia.getSite() cat = catlib.Category(site,'Category:プログラミング') gen = pagegenerators.CategorizedPageGenerator(cat) for page in gen: # この部分で各ページに対して何か処理を行います。例えば次のように。 text = page.get()
[編集] 貢献するには
もし、あなたがBotを改造して、そのパッチをメンテナに投げたいと思ったなら、
- 最新版にアップデートします(そうすることで、SVNのリポジトリに既にコミットされている改良点に、あなたの改造をマージします)。
- 更新による変更の衝突を解決します("====="等をgrepすればよいでしょう)
- 以下のように入力します。
-
$ svn diff > svn.diff
あなたが変更しようとした部分のみが変更されているかどうか、diffを再確認してみてください。頭に"?"のついている行は削除されてしまいます。
もし直接、Pywikipediabotの開発者と連絡を取りたければ、svn.diffを開発者に対して投げることもできます。しかし、Pywikipedia bug tracking systemでパッチをチケットに添付する方が望ましいでしょう。
[編集] 複数のアカウントでの実行
python wikipedia botを複数のアカウントで実行したくなることもあるでしょう。それには2つの方法があります。
[編集] Separate pywikipedia distributions
One can install completely separate instances of pywikipedia in different directories (1 for each account) and have diferent user-config.py files in each of them. However, when updating the installation via SVN, one needs to run svn update on each folder separately. Also, every installation takes some disk space, which might be a problem on accounts with limited quota.
[編集] One pywikipedia distribution with symbolic links
Let's assume user foo has a current SVN working copy of pywikipedia in /home/foo/pywikipedia. For each of the accounts, he creates a separate directory:
foo@bar:~$ mkdir foobot foo@bar:~$ cd foobot
Pywikipedia needs then some symlinks to the main code tree created in the working directory:
foo@bar:~/foobot$ ln -s ~/pywikipedia/families foo@bar:~/foobot$ ln -s ~/pywikipedia/userinterfaces
Then, user-config.py for this account must be created as described in Configuration section above.
Finally, the bot must be logged in the usual way:
foo@bar:~/foobot$ python ~/pywikipedia/login.py
The working directory is ready. The scripts will however require a slight modification to run (the path to the pywikipedia tree must be added to Python's path).
import sys, os sys.path.append(os.environ['HOME'] + '/pywikipedia') import wikipedia
That's all. Updating to the newest version of pywikipedia on all account at once is now a matter of running svn update only in the ~/pywikipedia directory.
[編集] Botとプロキシ
ここに回避方法の草案が多分あるでしょう。
[編集] 関連項目
- Wikipedia:Bot
- meta:Pywikipediabot general parameters
- meta:Pywikipedia bot on non-Wikimedia projects
- Botwiki
- Wikipedia:ウィキプロジェクト Bot

