2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

使用者:Lihaohong/pywikibot範例

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
跳至導覽 跳至搜尋
大萌字.svg
閱讀本用戶子頁面的任何人都可以參與編輯
Icon-info.png
作者(們)不太懂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'

會顯示所有符合以上兩個條件之一的頁面。

總結:

獲取頁面列表時有兩種選項:

  1. 生成器(generator)。包含-ref、-uncat、-search等。它們會生成一個頁面列表。多個生成器產生的列表會被合併。
  2. 過濾(filter)。包含-ns、-grep等。它們會過濾掉生成器生成的條目。

不管是生成器還是過濾,都可以同時使用多個以達成想要的效果。詳情見官方文檔

批量替換

官方文檔

必填:

  1. 把什麼替換成什麼。支持純文本和正則表達式。
  2. 替換哪些頁面。請使用熱身部分的生成器(過濾選用),詳見官方文檔。

簡單示例

把沙盒中的所有的「啊啊啊」替換為「啊」。

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」,因為默認的網站還是萌百。

自定義機器人

可行,而且挺好寫的。待補。

  1. 默認編輯萌百,默認添加Automation tool的tag等等
  2. bash/zsh/PowerShell等使用單引號最保險;cmd應使用雙引號