Help:Pywikipediabot
ウィキペディア日本語版のヘルプページです。
- pywikipediabotを準備するのに手助けがほしいなら#wikipedia-ja-bot接続(詳しくはWP:CHATを参照) にくるかpywikipediabot mailing listを使ってください。
2017年2月現在、このページの内容は既に廃れています。「mw:Manual:Pywikibot/ja」をご覧ください。 |
2010年9月10日頃、名前空間名に変更が加えられました。この変更に対応しているのは r8523 以降のリビジョンです。 |
セットアップ
Macを使用する場合は、こちらをお読みください。 |
Pythonのインストール
pywikipediaのダウンロード
SVNを使ったダウンロード
$ 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メーリングリストに登録するのは、良い考えでしょう(こちらを参照)。Botソフトウェアのファイルが更新されるたびにリストにメールが送られるので、新しいバージョンにアップデートする必要があるかどうか確認できます。
アカウント取得
ボットの運用条件や注意事項については Wikipedia:Bot を参照してください。
大規模な編集を行う場合は、Botのアカウントは通常の利用者と区別するため、専用のアカウントを取得しなければなりません。これは、Botフラグを付与することで最近更新されたページからBotの編集を隠すためです。ウェブブラウザを使ってあなた自身が手動で取得してください。利用者名は、通常「bot」の文字が後ろに付けられることが推奨されます。パスワードはあなた自身のアカウントと別のものがよいでしょう。
user-config.py の設定
config.py
にあります。これを直接書き換えるとSVNでのアップデートで支障が出ることがあるため、お勧めできません。値を変更する場合には、同じ階層に use
r-config.py
を作成します。user-config.p
y
だけで設定を上書きしていくことで、初期値に戻したい場合、削除することで対応できます。
アカウントに関する設定
以下の節では、アカウントに関する設定について説明しています。なお、testfamily.py
というプログラムがある場合は、実行することで簡易設定を行うことができます。(説明省略)
ウィキペディアの場合
メモ帳などのテキストエディタを開きます。
以下のように打ちます:
mylang = 'xx'
user-config.py
という名前で、ダウンロードしたpyファイルと一緒のフォルダに保存します。
複数の言語で動作させたいなら、コマンドライン引数の-langパラメータで指定できるので、ここでは最もよく使う言語コードを指定しましょう。
user-config.py
では、Botの利用者名を指定する必要があります。
ウィキペディア日本語版で動作させるとします。﹁ExampleBot﹂という利用者名でBotのアカウントを取得しているならば、以下のようにuser-config.py
に追記します。
usernames['wikipedia']['ja'] = u'ExampleBot'
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'
ウィキペディア以外のウィキサイトの場合
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フォルダにウィキサイトが無い場合
_
family.py
ファイルを作成する必要があります。作成に関する説明は省きますので、meta:Pywikipedia bot on non-Wikimedia projectsを参照してください。
この場合でも user-config.py
の設定を行ないます。
ウィキ名 Memory Alpha (memoryalpha) の英語版 (en) で動作させるとします。﹁ExampleBot﹂という利用者名でBotのアカウントを取得しているならば、以下のように記述します:
mylang = 'en'
family = 'memoryalpha'
usernames['memoryalpha']['en'] = u'ExampleBot'
このテキストファイルをuser-config.py
という名前で、ダウンロードしたpyファイルと一緒のフォルダに保存します。
その他の設定
user-con
fig.py
に put_throttle = 30
いう行を追加します。これはPywikipediaBotの編集間隔の秒数です。デフォルトは10です。
ウィキペディア日本語版では、どんなに早い場合でも10秒以上︵毎分6回︶の間隔を守らなくてはなりません。Botフラグ無し、かつ、大量編集する場合には60秒以上の間隔を求められます。編集間隔を60秒より大きい値にする場合には、maxthrottle = 120
という行を追加します。これは編集間隔の最大値を制限し、この場合は120秒になります。
Botフレームワークがサポートしているスキンは、Monobook のみです。デフォルトから変更しないようにしましょう。
命令実行のショートカット作成(Windowsユーザ向け)
使い方
cd pywikipedia
動作確認
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 login.py -testログイン中のウィキ・ファミリーの名前と自分のアカウント名を調べてコンソールに出力します。
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.
使用申請
Botを運用するためには、コミュニティに許可を得る必要があります。許可の基準の厳しさはプロジェクトによって異なります。何の許可もなく自由に運用できるプロジェクトもありますが、ウィキペディア日本語版では、試験運用を行い有用で無害であることを証明して許可を得る必要があります。
スクリプト
それぞれの解説ページにある引数一覧は完全な物ではありません。詳細はhelp引数で参照してください。 |
現在利用できるBotのリストと解説ページへのリンク (mediawiki):
コマンドライン引数
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:w
ikipedia
で[スクリプト名]Botをウィキペディアで動作させます。user-config.py
での設定より優先されます。
バグ報告
開発
もし、あなたがBotに、従来のBotには無い新機能を付けたいと思ったなら、誰かプログラマーに頼んでその機能を実装して貰うことが出来ます。或いは自分でBotを改造出来るなら、その方が良いでしょう。Pythonは良くできたプログラミング言語ですし、習得は難しくありません。あなたも挑戦してみましょう。
Tips
このHelp:Pywikipediabotのページと、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")
import catlib
import pagegenerators
site = wikipedia.getSite()
cat = catlib.Category(site,'Category:プログラミング')
gen = pagegenerators.CategorizedPageGenerator(cat)
for page in gen:
# この部分で各ページに対して何か処理を行います。例えば次のように。
text = page.get()
貢献するには
$ 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
- プロジェクト:Bot
参考
- hu:Category:Egyedi fejlesztésű Pywikipedia-kódok - 英語/ハンガリー語によるBotの作り方など。