Windows下安装Pywikipediabot

很早就想在MediaWiki上使用bot,但一直没有去关注。MediaWiki上的bot实现有很多途径,.NET,perl,java都有,但是貌似python最容易。于是选择了PyWikipediaBot。网上关于Pywikipedia中文的资料比较少,所以就自己按照meta-wiki上的Pywikipedia的instruction中的步骤进行安装,比较简单。

meta-wiki安装指南:http://meta.wikimedia.org/wiki/Pywikipediabot/Installation (这个有中文版翻译)

安装环境:

Windows 7 Ultimate + Python 2.7 (pywikipedia不支持Python 3.X)

MediaWiki 1.16.2 ,单语言(简体中文)

1.下载Pywikipedia。

手动下载或者TortoiseSVN都可以,后者的好处是升级方便。

手动下载PyWikipediaBot Nightlies:http://toolserver.org/~pywikipedia/nightly/

随便选一个:http://toolserver.org/~pywikipedia/nightly/package/pywikipedia/pywikipedia-nightly.7z

TortoiseSVN:http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/

  1. 设置快捷键。

Linux下直接export一个变量就行了:

PYTHONPATH=$PYTHONPATH:~/pywikipedia/
export PYTHONPATH

Windows下简单的方法就是:为pywikipedia目录创建快捷方式,然后编辑属性,目标写cmd.exe,起始位置写该目录的路径,确定后单击该快捷方式可以直接进入cmd并且在该目录下

  1. 配置。

参考 http://meta.wikimedia.org/wiki/Pywikipediabot/Use_on_non-Wikimedia_wikis

按照安装指南,应该先创建family.py,再创建user-config.py。

3.1. 创建yourwiki_family.py,直接在/families中现成的py文件中选择一个,复制并修改即可,我改的就是最简单的“mozilla_family.py”,文件命名为“你wiki的名字_family.py”:

# -*- coding: utf-8  -*-

import family

class Family(family.Family):

     def __init__(self):
         family.Family.__init__(self)
         self.name = 'yourwiki' # 设置family名称,就是“你wiki的名字”(文件名下划线前面的部分)
         self.langs = {
             'en': 'localhost', # 语言和主机名。语言设成en即可(之前一直登录失败就是在这写成了zh-cn,后来改成en后可用了)
         }

         self.namespaces[4] = {
             '_default': u'YourWiki', #  计划页面的命名空间,一般就是LocalSettings.php中的$Sitename的值
         }

         self.namespaces[5] = {
             '_default': u'YourWiki talk', # 计划页面讨论页的命名空间
         }

     def version(self, code):
         return "1.16.1"  # MediaWiki版本号,这个貌似不重要

     def scriptpath(self, code):
         return '/wiki' # index.php, api.php的脚步相对路径,这个和你wiki所在具体路有关,比如你的MediaWiki在/wiki目录下,那么这里就写“/wiki”

3.2 创建user-config.py:这个可以手动创建,也可以通过cmd中执行generate_user_files.py按照提示进行:

# -*- coding: utf-8  -*-
family = 'yourwiki' #family名称,就是“你wiki的名字”
mylang = 'en' #语言,一般设成en即可
usernames['yourwiki']['en'] = u'ExampleBot' #你机器人的用户名,这个是已经在MediaWiki上创建好的机器人账户

没有什么意外的话,配置就完成了。

4.登录。

进入cmd终端pywikipedia目录下,执行login.py(可以附加参数 -v verbose显示详细信息),输入密码即可

C:\pywikipedia>login.py -v -v
Password for user ExampleBot on yourwiki:en:
Logging in to yourwiki:en as ExampleBot via API.
==== API action:login ====
lgname: ExampleBot
lgpassword: 123456
----------------
Requesting API query from yourwiki:en
==== API action:login ====
lgname: ExampleBot
lgtoken: f1850634f20a6fd0a92a12668ae9b36f
lgpassword: 123456
----------------
Requesting API query from yourwiki:en
Should be logged in now

显示“Should be logged in now”说明登录成功了。

  1. 使用:登录成功后,bot一般就不会logout了。

然后就可以慢慢参考 http://meta.wikimedia.org/wiki/Pywikipediabot/Scripts 中使用明细进行操作了。

常见的操作有:

add_text.py Adds text at the top or end of pages
category.py Manages categories
imagecopy.py        Copies images from a wikimedia wiki to Commons
interwiki.py        Creates Interlanguage links between a project
redirect.py Fixes double redirects, and deletes broken redirects
replace.py  Edits using text replacement
solve_disambiguation.py     Fixes disambiguation pages
table2wiki.py       Converts HTML tables to MediaWiki markup
template.py Replaces one template with another (easier to use than replace.py)
upload.py   Uploads images to a wiki
weblinkchecker.py

执行编辑操作成功后,机器人的编辑将会在最近更改中显示。