FIFA ワールドカップ 2014 ブラジル大会の暑い季節がやってまいりましたね!
昨日6月12日の22時からこのコミュニティセントラルのチャットにて『第4回オフィスアワー』を開催しました。今回も夜遅くにオフィスアワーにご参加頂いた方々、ありがとうございました。
今回は私を含めて3名ほどの参加者がおられました。その中からPyWikiBotについての質問が来ました。今回もレベルが高めの質問でした。レベルの高い話があってもオフィスアワーでは、初心者は大歓迎です。
質問と回答[]
ボットの一種である、PyWikiBot (PyWikipediaBot) の使い方についての質問がきました。
私が初めてウィキアでBotを使い始めたときは、英語版コミュニティセントラルのブログ記事w:c.community:User_blog:TyA/Pywikipediaを参考にして使うことが可能になりました。
まず当時のバージョンと、現在の最新版のPyWikiBotではコマンドの使い方に若干の違いがあるのでやや注意が必要です。 以前は、
python login.py
と入力すればログインのテストができました。しかし現時点の最新版では
python pwb.py login
と入力する必要があります。"login.py" の .py は省略できます。
まず、Python が自分が使用しているOSにインストールされている必要があります。 ここではWindows 7 上で、coreバージョンの最新版Pythonを使う場合を例にとって説明します。
Windowsでは、まず[スタート]ボタンを押して、「プログラムとファイルの検索」の入力フィールドに
cmd
と入力します。するとコマンドプロンプトが起動します。このコマンドプロンプトで
python -V
と入力して、バージョンが2.7.7 であれば、現在のPyWikiBotの動作に必要なPythonのバージョンがすでにインストールされています。
もしバージョンが2.7.2よりも古いか、3.xの場合は、バージョンが2.7.2以上のPythonをダウンロードしてインストールする必要があります。Windows版であればこちらのPython公式サイトから2.7.7をダウンロードできます。
次に、PyWikiBotをダウンロードします。ダウンロード方法は、何通りか存在します。 一番簡単な方法は Pywikibot Nightlies からダウンロードすることです。Subversion や Git によるダウンロードは、それらのバージョン管理ツールの使い方をある程度熟知している必要があるので、初心者はNightlies からダウンロードすることをおすすめします。
ダウンロードが終わったら、PyWikiBotを動作させたいディレクトリ (フォルダ) にダウンロードしたファイルを解凍してコピーします。c:\PyWikiBot ディレクトリにコピーする場合は、解凍して出てきた Coreディレクトリを丸ごと次のようにコピーしてみます。
C:\PyWikiBot\Core
この状態で、コマンドプロンプトを起動し、
cd C:\PyWikiBot\Core
と入力してこのディレクトリに移動します。 ここで、早速設定ファイルを作成します。
familyファイルを生成する[]
まず、どのウィキアコミュニティでBotを使うかを指定したfamilyファイルを作成します。例えば、ここではこのコミュニティセントラルのfamilyファイルを作成することにします。まず、次のように入力します。
python pwb.py generate_family_file
すると、次のようにウィキアコミュニティのURLを尋ねられます。
Please insert URL to wiki:
ここでは、http://ja.community.wikia.com/wiki/ と入力します。他のウィキアコミュニティでは "community" の箇所を適宜変更します。間違えると、他のウィキアコミュニティのURLを指定したことによって、そのコミュニティで誤ってボットを作動させてしまう恐れがあるので、慎重に入力してください。とはいえ、familyファイルを作成後にあとで修正したり、再作成することも可能です。 次に短縮名を入力します。
Please insert a short name (eg: freeciv):
これは、PyWikiBotがfamilyファイルを識別するためのラベルになります。他のfamilyファイルと被らないように、なるべく一意な名前にするとよいでしょう。この例では、"jacommunity" と入力してみることにします。
次に、インターウィキリンクの作成を尋ねられます。そのウィキアコミュニティにもし他にも言語間リンクを設定しており、各ページで自動的に言語間リンクを貼りたい場合は指定すると良いでしょう。指定したい場合は、"y" と入力します。
Do you want to generate interwiki links? This might take a long time. ([y]es/[N]o/[e]dit)
これで jacommunity_family.py というファイルが、下記のディレクトリで自動生成されます。
C:\PyWikiBot\Core\pywikibot\families\jacommunity_family.py
ユーザーファイルを生成する[]
次に、ユーザーファイルを作成します。次のように入力します。
python pwb.py generate_user_files
すると、まずどのディレクトリに user-config.py ファイルを置くかを尋ねられます。デフォルトではcoreディレクトリに置かれます。デフォルトのディレクトリでよければKと入力し、保存先ディレクトリを変えたければcを押して変更します。
How to proceed? ([K]eep [c]hange)
次に、既存のPyWikiBotのインストール済みディレクトリからユーザーファイルをコピーするかどうか聞いてきます。コピーしない場合は、nを、コピーする場合はyを押します。初めて使用する場合は、nと入力するとよいでしょう。
Do you want to copy user files from an existing pywikibot installation?
user-config.py ファイルを作成するかどうか聞いてきます。初めてBotを利用する場合は迷わずyと入力するとよいでしょう。
Create user-config.py file? Required for running bots ([y]es, [N]o)
次に、ボットを使用するサイトの family を聞かれます。何も入力しないでエンターキーを押すとWikipediaがデフォルトで指定されます。この場合は、以前作成したfamilyのひとつとして、"jacommunity" が一覧に表示されているはずです。一覧からjacommunity の番号を指定してエンターを押すと、familyファイルを指定できます。
Select family of sites we are working on, just enter the number not name (default: wikipedia):
次に使用する言語コードを指定します。デフォルトでは英語版の "en" が指定されます。通常は、日本語を意味する ja と入力することでしょう。
The language code of the site we're working on (default: 'en'):
次にボットアカウントのユーザー名を指定します。自分のボット用アカウント名を指定してください。
Username (ja jacommunity):
次に、設定ファイルを簡略版として作成するか拡張版として作成するかどうかを尋ねられます。はじめのうちは簡略版のSと入力するとよいでしょう。
Which variant of user_config.py: [S]mall or [E]xtended (with further information)?
次に、他のプロジェクト (他のウィキアコミュニティ) のfamily を追加するかどうかを聞いてきます。はじめのうちは試しに利用するということで、Nを押してここで終わりにしてみるとよいでしょう。するとcoreディレクトリに user-config.py が作成されます。
Do you want to add any other projects? (y/N)
次にuser-fixed.py ファイルを生成するかどうか聞いてきます。これはオプションであり上級ユーザー向けですので、始めのうちはNを指定するとよいでしょう。
Create user-fixes.py file? Optional and for advanced users ([y]es, [N]o)
これでuser-config.pyファイルの作成が終了します。
ログインを試す[]
次に、PyWikiBot経由で指定したウィキアコミュニティへのログインを試してみます。
python pwb.py login
と入力します。ここで自分のBot用アカウント名とパスワードを入力します。成功すればログイン済みであることを確認できます。ログインを試みる前に、まずBot用アカウントを使ってウィキア上で通常の方法でログインしてからSpecial:PreferencesでスキンをMonobookに指定する必要があります。これを指定しないとログインできない可能性があります。
これで、PyWikiBotを使用することができるようになります。
その他の質問[]
PyWikiBotでgenerate-user-filesを実行するときにUnicodeDecodeErrorが起きたという質問がありました。現在、最新版のPyWikiBotを上記のように動かした時にはとくにこの問題は起きなかったので、申し訳ないことにまだこの原因についてはまだ解明できずにいます。
要望など[]
オフィスアワーそのものに対する要望、オフィスアワーそのもののやり方、開催日時、時間帯など何かご意見ご感想などがあれば、このブログのコメント欄などにてお申し付けください。