mwclient

先前在處理一個使用 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()
 

 

而這支程式碼範例所執行的動作如下:

  1. 連接「www.example.com/wiki」。
  2. 使用特定的帳號(USER)及密碼(PASSWD)登入。
  3. 搜尋內文含有特定文字(FIND_TEXT)的頁面。
  4. 編輯這些頁面,替換文字(REPLACE_TEXT)並儲存。

 

分類: