如何在MediaWiki中批量删除无页面贡献的用户
在MediaWiki中批量删除无贡献用户的方案
目前MediaWiki没有官方或专门的扩展直接实现批量删除从未贡献用户的功能,但你可以通过以下几种无需直接修改数据库的方式完成:
使用自带的维护脚本
- 先筛选出无贡献用户:可以通过维护脚本
php maintenance/sql.php执行查询语句(仅查询,不修改)来导出符合条件的用户列表,比如查找编辑次数为0且没有上传过文件、没有在讨论页发帖的用户:SELECT user_name FROM user LEFT JOIN edit ON user_id = edit_user LEFT JOIN image ON user_id = img_user LEFT JOIN page ON user_id = page_user AND page_namespace = 1 -- 讨论页命名空间 WHERE edit_id IS NULL AND img_id IS NULL AND page_id IS NULL; - 将查询结果整理成每行一个用户名的文本文件,然后用
deleteUsers.php脚本批量删除:php maintenance/deleteUsers.php --batch < 无贡献用户列表.txt
注意:执行脚本需要服务器端权限,且操作前务必备份数据库。
- 先筛选出无贡献用户:可以通过维护脚本
基于MediaWiki API开发简易脚本
可以写个简单的脚本(比如Python或PHP),通过MediaWiki API完成两步操作:- 调用
list=users接口获取所有用户列表; - 对每个用户调用
action=query&list=usercontribs接口检查贡献次数,若为0则调用action=delete接口删除用户。
这种方式完全通过官方API操作,无需接触数据库,适合有基础开发能力的用户。
- 调用
手动批量操作(适合少量用户)
如果用户数量不多,可通过Special:ListUsers页面,在筛选条件中选择“编辑次数为0”,然后逐个勾选用户,通过页面的批量操作功能删除(部分MediaWiki版本支持批量勾选删除,若没有则需借助浏览器扩展实现批量勾选)。
需要注意的是:删除用户前要确认用户确实没有任何形式的贡献(包括讨论页回复、文件上传、模板编辑等),避免误删有隐性贡献的用户;操作前一定要做好数据库备份,防止意外情况发生。
内容的提问来源于stack exchange,提问作者VN20
相关产品推荐
相关产品推荐

