先前在處理一個使用 MediaWiki 架設的網站時,打算利用機器人程式來自動化處理大量的修改工作。於是看了 Manual:Creating a bot 這個頁面,接著便找到了 mwclient 這款輕量化、可用來存取 MediaWiki API 的 Python 函式庫。雖然這款函式庫所提供的功能符合 DR 的需求,但文件卻不是很齊全,使得 DR 先花了點時間檢視其原始碼才弄出想要的功能。
該函式庫在 Fedora 21 上的安裝方式如下:
- sudo yum install python-mwclient
若是在 Windows 環境下,那麼最方便的安裝方式是使用 pip 安裝:
- cd C:\Python27\Scripts
- pip install six mwclient
使用 mwclient 的程式碼範例如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import mwclient
SITE = "www.example.com"
PATH = "/wiki/"
USER = "YOUR_USERNAME"
PASSWD = "YOUR_PASSWORD"
FIND_TEXT = u"[[Category:Chinese]]"
REPLACE_TEXT = u"[[Category:Traditional Chinese]]"
SUMMARY = u"Edited by a robot."
def wiki_find_replace():
site = mwclient.Site(SITE, path = PATH)
site.login(USER, PASSWD)
do_search = site.search(FIND_TEXT, what = "text")
result = []
while 1:
try:
result.append(do_search.next()["title"])
except:
break
x = 0
for title in result:
page = site.Pages[title]
text = page.text().replace(FIND_TEXT, REPLACE_TEXT)
page.save(text, summary = SUMMARY)
x = x + 1
print "Page %d updated." % x
print "%d page(s) updated." % x
if __name__ == "__main__":
wiki_find_replace()
而這支程式碼範例所執行的動作如下:
- 連接「www.example.com/wiki」。
- 使用特定的帳號(USER)及密碼(PASSWD)登入。
- 搜尋內文含有特定文字(FIND_TEXT)的頁面。
- 編輯這些頁面,替換文字(REPLACE_TEXT)並儲存。