User: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”,因为默认的网站还是萌百。
自定义机器人
可行,而且挺好写的。待补。