ArchWiki:Bots
机器人 (Bots) 是 维护团队 的重要工具,它可以轻松执行从日常例行工作到复杂的单次更新等各种重复性任务。机器人编辑占到了本 Wiki 所有贡献的 8% 以上——如果手动完成这些编辑,过程将会非常繁琐。
目前有两个活跃的机器人账号:
- Kynikos.bot (操作者: Kynikos)
- Lahwaacz.bot (操作者: Lahwaacz)
软件
机器人使用 MediaWiki API 与 Wiki 服务器通信。虽然 维基媒体基金会 开发了许多使用此 API 的机器人,但它们通常不够通用,无法在其他 Wiki 上运行,甚至与我们的样式指南冲突。因此,我们一直在开发自己的 ArchWiki 专用机器人工具,尽管在外部第三方评估时它们可能具有相同的缺陷。
Wiki Monkey
Wiki Monkey 项目旨在通过直接在 Web 浏览器中增强 Wiki 页面来提高编辑效率。它作为一个用户脚本运行,允许在文章编辑页面中半自动执行重复性任务,或从 分类 或 链入页面 等文章列表页面全自动执行。Wiki Monkey 还增加了一些辅助功能,例如 最近更改 和 新页面 的过滤器。详见 文档。
通过 Wiki Monkey 机器人接口进行的编辑会标记有 wiki-monkey 标签,可以在最近更改列表中进行 过滤。
wiki-scripts
wiki-scripts 项目包含许多 Python 脚本,这些脚本围绕一个用于 MediaWiki API 的小型类库抽象构建。这些脚本的用途各异,从在不编辑 Wiki 的情况下收集信息,到执行复杂的自动化编辑(在 #任务 中有相关描述)。
由 wiki-scripts 以自动或交互方式进行的编辑会标记有 wiki-scripts 标签,可以在最近更改列表中进行 过滤。
任务
本节描述了 ArchWiki 机器人重复执行的任务。它作为运行中机器人脚本功能的概述和文档。请注意,机器人编辑默认在 最近更改 中隐藏,因为将它们包含在内会使关注和参与常规贡献变得更加困难。
双重重定向
修复 双重重定向 是最古老的自动化任务。这可以通过 Python 脚本 或 Wiki Monkey 的专用插件来完成。
目录
目录 页面及其“翻译版本”通过使用 toc.py 脚本进行维护。该脚本可以每日运行,执行仅需几秒钟。
该页面需要使用以下入口表格手动初始化:
{| id="wiki-scripts-toc-table"
|}
此表格的内容会被脚本生成的更新版本替换,页面的其余部分保持不变。脚本可识别以下可选配置属性:
data-toc-languages指定要在页面上显示的语言。它是一个由逗号分隔的语言标签列表,最多可指定 2 个。默认为当前页面的语言,例如对于 Table of contents (Русский) 为ru。data-toc-alsoin指定“also in (也见于)”短语的翻译。格式为tag1:text, tag2:text, ...。
例如(取自 Table of contents (Русский)):
{| id="wiki-scripts-toc-table" data-toc-languages="ru,en" data-toc-alsoin="ru:Также в"
...
|}
用户还可以通过编辑 Wiki 页面上的链接来翻译表格中的分类名称,脚本在更新时会保留这些翻译。
统计
ArchWiki:Statistics 页面由 statistics.py 脚本维护。目前仅 用户统计 (User statistics) 部分是自动生成的,其余部分手动更新。更新大约需要 15 秒,应每日运行。
该脚本通过从 API 获取所有修订版本和用户账号的元数据,并将其缓存在本地以提高性能。编辑计数是通过手动计算用户贡献来确定的,不依赖 MediaWiki 的计数器。
软件包模板
update-package-templates.py 脚本解析所有页面的内容,并更新 Pkg、Grp 和 AUR 模板。脚本实际上不会更改包名,但例如对于最近从 AUR 移动到官方仓库的包,链接会从 Template:AUR 更新为 Template:Pkg。无效的软件包链接会标记为 Template:Broken package link,并带有一个显示软件包状态的实用提示。
脚本在存在本地化版本的 Template:Broken package link 时会使用它们,否则回退到英文版本。除此之外,没有服务器端配置。
每次运行后,但最多每 7 天一次,脚本会在 User:Lahwaacz.bot/Reports/archpkgs 创建一份详细的损坏链接报告。
跨语言
interlanguage.py 脚本执行以下操作:
执行时间取决于更新量,通常少于一分钟,在没有更新时约为 30 秒。
页面语言
update-page-language.py 脚本根据标题(参见 Help:i18n#Page titles)确定每个页面的语言,并在 wiki 数据库中设置语言代码。这通过 MediaWiki 的 $wgPageLanguageUseDB 设置实现 [3]。
链接检查
- extlink-checker.py 尝试检查外部链接的状态,那些确定已损坏的链接会被标记为 Template:Dead link。许多链接仍无法通过此工具检查,主要是因为某些网站需要 JavaScript 或服务器返回了不确定的 HTTP 状态码。
- url-replace.py 对外部链接执行各种替换,例如将 URL 从 HTTP 更新为 HTTPS,或将指向 wiki.archlinux.org 的外部链接替换为内部链接。
- link-checker.py 对内部链接、手册页链接和外部链接执行各种检查和替换(使用与
url-replace.py相同的代码)。 - mark-archived-links.py 将指向 ArchWiki:Archive 的内部链接标记为 Template:Archived page。