用戶:Lihaohong/pywikibot範例
默認使用魔改版的pywikibot[注 1]。下載地址在GitHub,點擊下載最新的zip文件,然後仿照Help:使用Python編輯更改設置和登錄即可。注意:user-config.py,user-password.py等文件已經創建,只需替換用戶名和密碼。
以下命令默認使用python開頭。macOS和Linux用戶可能需要使用python3命令。
小提示
如果覺得速度很慢,是因為user-config.py默認每次編輯間隔至少20秒,更小的數字會違反一分鐘最多三次編輯的方針。
小心控制台命令的特殊字符。如果有空格,方括號等特殊字符,請把它放進雙引號或單引號[注 2]。
熱身:列舉頁面
搜索關鍵詞Alicesoft並列舉所有相關頁面。
python pwb.py listpages -search:Alicesoft
指定主命名空間:
python pwb.py listpages -ns:0 -search:Alicesoft
或者指定僅搜索用戶頁和用戶討論頁:
python pwb.py listpages -ns:User,3 -search:pywikibot
這裏命名空間既可以用數字,也可以用英語單詞和漢語。多個命名空間可以用逗號分隔。
列舉所有沒有分類的條目:
python pwb.py listpages -uncat
意外發現普通、猛吹之薇茵和抹殺的指名者都沒有分類。又水了三次編輯,美滋滋。
列舉所有包含指向某個條目的連結的頁面:
python pwb.py listpages -ref:AliceSoft
於2022年7月24日運行時,共394個條目有AliceSoft的內鏈。結合下面的批量替換,可以在移動AliceSoft後輕鬆清理鏈入。
按照內容過濾頁面:
python pwb.py listpages -ref:'AliceSoft' -grep:'兰斯'
所有不包含「蘭斯」的頁面會被過濾。共有272個條目含有指向AliceSoft的內鏈且包含「蘭斯」二字。
使用多個生成器:
python pwb.py listpages -uncat -ref:'AliceSoft'
會顯示所有符合以上兩個條件之一的頁面。
總結:
獲取頁面列表時有兩種選項:
- 生成器(generator)。包含-ref、-uncat、-search等。它們會生成一個頁面列表。多個生成器產生的列表會被合併。
- 過濾(filter)。包含-ns、-grep等。它們會過濾掉生成器生成的條目。
不管是生成器還是過濾,都可以同時使用多個以達成想要的效果。詳情見官方文檔。
批量替換
必填:
- 把什麼替換成什麼。支持純文本和正則表達式。
- 替換哪些頁面。請使用熱身部分的生成器(過濾選用),詳見官方文檔。
簡單示例
把沙盒中的所有的「啊啊啊」替換為「啊」。
python pwb.py replace "啊啊啊" "啊" -page:Help:沙盒
搜索所有主命名空間(-ns:0)帶有「Alicesoft」關鍵詞的頁面(-search:Alicesoft),並把搜索結果中的所有頁面里的「Alicesoft」替換為「AliceSoft」。所有編輯都要打上「Bot」標籤(-tags:Bot),且編輯摘要為"更正[[AliceSoft]]拼写"。
python pwb.py replace -ns:0 Alicesoft AliceSoft -search:Alicesoft -tags:Bot -summary:"更正[[AliceSoft]]拼写"
結果示例:Special:差異/6115920/6184580
正則替換
這裏假設讀者知道如何使用正則表達式(其實我也不太懂)。正則的幫助可以參考Help:正則表達式和python官方幫助。StackOverflow也有不少有趣的例子[1][2][3][4]。
加上「-regex」即可啟用。
糾正DLsite的大小寫問題:把dlsite、Dlsite、DLSite等變種統一為正確拼寫。需要用正則防止網址(如www.dlsite.com或xxx.com/dlsite)也被捕獲。這裏使用單引號防止正則被控制台誤認為其它命令,cmd用戶請換成雙引號。
python pwb.py replace -ns:0 -search:Dlsite '(?<!/)[Dd][Ll][Ss]ite(?!\.)' 'DLsite' -regex -summary:'批量纠正[[DLsite]]拼写'
結果示例:Special:差異/5827257/6190401
dlsite:https://www.dlsite.com.tw/home/circle/01874.html
會被替換為
DLsite:https://www.dlsite.com.tw/home/circle/01874.html
可以看出,當dlsite位於網址中時不會被替換。
pwb的正則無需寫得完美。如果需要替換的頁面不多,可以逐個覆核。需要額外操作的頁面也可以用瀏覽器打開手動更正。
批量添加
批量在頁頂添加模板:
python pwb.py add_text -text:'{{ygotop}}' -catr:游戏王 -grepnot:'\{\{[Yy]gotop' -ns:0 -up
生成器:所有分類為「遊戲王」,或者分類為「遊戲王」子分類的頁面。
過濾:頁面不能已經包含{{ygotop}}(使用-grepnot過濾);僅限主命名空間頁面(作為保險)
此外,-up會將模板放置於頁面頂部,-text指定要添加的文本。
分類
將屬於一個分類的頁面移動到另一分類。注意:該操作默認自動完成,不會向用戶請求確認。
python pwb.py category move -from:'Project Sekai Colourful stage' -to:'世界计划 彩色舞台 feat. 初音未来'
添加分類:
python pwb.py category add -search:'project sekai'
搜索關鍵字「project sekai」,並給搜索結果中的條目添加分類。
移除分類等其它功能見官方文檔。
編輯共享站
先改user-config.py,加入共享站:
family_files['mgp'] = 'https://mzh.moegirl.org.cn/api.php'
family_files['commons'] = 'https://commons.moegirl.org.cn/api.php'
mylang = 'mgp'
family = 'mgp'
# Your username here
usernames['mgp']['*'] = 'Lihaohong'
usernames['commons']['*'] = 'Lihaohong'
password_file = "user-password.py"
user-password.py也要改,要加入共享站的機械人密碼。兩個站點之間的機械人密碼不互通。
在操作共享站時,在控制台輸入
python pwb.py 某个命令 -family:commons
無論是登陸還是批量替換,都需要這個額外的步驟表明操作對象是共享站。
操作萌百無需輸入「-family:mgp」,因為默認的網站還是萌百。
自定義機械人
可行,而且挺好寫的。待補。