ArchWiki:机器人
机器人是维护团队的重要工具,可以轻松执行从日常例行任务到复杂的一次性更新等重复性任务。机器人编辑占 Wiki 所有贡献的 8% 以上 —— 所有这些编辑如果手动完成将非常繁琐。
目前有两个活跃的机器人账户
- Kynikos.bot(由 Kynikos 运营)
- Lahwaacz.bot(由 Lahwaacz 运营)
软件
机器人使用 MediaWiki API 与 Wiki 服务器通信。维基媒体基金会开发了许多使用此 API 的机器人,但它们通常不够通用,无法在其他 Wiki 上工作,甚至与我们的风格指南冲突。因此,我们一直在开发我们自己的 ArchWiki 特定的机器人工具,这些工具在外部评估时也存在相同的缺陷。
Wiki Monkey
The Wiki Monkey 项目的目的是通过直接增强 Web 浏览器中的 Wiki 页面来促进高效编辑。它作为用户脚本运行,允许在文章编辑器页面中半自动执行重复性任务,或从文章列表页面(如分类或链入页面)中全自动执行。Wiki Monkey 还添加了一些助手,例如 Special:RecentChanges 和 Special:NewPages 的过滤器。详见 文档。
由 Wiki Monkey 机器人界面进行的编辑会标记为 wiki-monkey
标签,可以在最近更改列表中进行过滤。
wiki-scripts
The wiki-scripts 项目包含许多围绕 MediaWiki API 的小型类库抽象构建的 Python 脚本。包含的脚本的用途范围从收集信息(无需编辑 Wiki)到执行复杂的自动化编辑,这在 #任务 中进行了描述。
由 wiki-scripts 进行的编辑,无论是自动还是交互式,都会标记为 wiki-scripts
标签,可以在最近更改列表中进行过滤。
任务
本节介绍 ArchWiki 机器人重复执行的任务。它概述并记录了已操作机器人脚本的功能。请注意,机器人编辑默认情况下在 Special:RecentChanges 中是隐藏的,因为包含它们会使跟踪和参与常规贡献变得更加困难。
双重重定向
修复双重重定向是最古老的自动化任务。例如,可以使用 Python 脚本或 Wiki Monkey 的专用插件来完成。
目录
目录页面及其“翻译”通过使用 toc.py 脚本进行维护。该脚本可以每天运行,执行时间只需几秒钟。
该页面需要使用以下入口点表格手动初始化
{| id="wiki-scripts-toc-table" |}
此表格的内容将替换为脚本生成的更新版本,页面的其余部分保持不变。该脚本识别以下用于配置的可选属性
data-toc-languages
指定页面上要显示的语言。它是以逗号分隔的语言标签列表,最多可以指定 2 个。默认为当前页面的语言,例如对于目录 (Русский) 为ru
。data-toc-alsoin
指定“also in”短语的翻译。格式为tag1:text, tag2:text, ...
。
例如(来自 目录 (Русский))
{| id="wiki-scripts-toc-table" data-toc-languages="ru,en" data-toc-alsoin="ru:Также в" ... |}
用户还可以通过编辑 Wiki 页面上的链接来翻译表格中的类别名称,脚本会在更新时保留它们。
统计
ArchWiki:统计页面由 statistics.py 脚本维护。目前只有 用户统计 部分是自动生成的,其余部分是手动更新的。更新大约需要 15 秒,应该每天运行。
该脚本的工作原理是从 API 获取所有修订版本和用户帐户的元数据,并在本地缓存以获得更好的性能。编辑计数是通过手动计算用户贡献来确定的,而不依赖于 MediaWiki 计数器。
软件包模板
The 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 创建一份详细的断开链接报告。
跨语言
The interlanguage.py 脚本执行以下操作
执行时间取决于更新的数量,通常少于一分钟,如果没有更新则约为 30 秒。
页面语言
The update-page-language.py 脚本根据标题(参见 帮助:i18n#页面标题)确定每个页面的语言,并在 Wiki 的数据库中设置语言代码。这可以通过 MediaWiki 的 $wgPageLanguageUseDB 设置 [1] 实现。
链接检查
- 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。