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应使用双引号