ArchWiki:机器人

出自 ArchWiki

机器人是维护团队的重要工具,可以轻松执行从日常例行任务到复杂的一次性更新等重复性任务。机器人编辑占 Wiki 所有贡献的 8% 以上 —— 所有这些编辑如果手动完成将非常繁琐。

目前有两个活跃的机器人账户

本文或本章节需要扩充。

理由:或许可以添加一些关于新机器人的策略?(在 ArchWiki talk:Bots 中讨论)

软件

机器人使用 MediaWiki API 与 Wiki 服务器通信。维基媒体基金会开发了许多使用此 API 的机器人,但它们通常不够通用,无法在其他 Wiki 上工作,甚至与我们的风格指南冲突。因此,我们一直在开发我们自己的 ArchWiki 特定的机器人工具,这些工具在外部评估时也存在相同的缺陷。

Wiki Monkey

The Wiki Monkey 项目的目的是通过直接增强 Web 浏览器中的 Wiki 页面来促进高效编辑。它作为用户脚本运行,允许在文章编辑器页面中半自动执行重复性任务,或从文章列表页面(如分类链入页面)中全自动执行。Wiki Monkey 还添加了一些助手,例如 Special:RecentChangesSpecial: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 计数器。

注意: 一些改进在 ArchWiki talk:Statistics#Improvements 中讨论。

软件包模板

The update-package-templates.py 脚本解析所有页面的内容并更新 PkgGrpAUR 模板。包名称实际上不会被脚本更改,但例如,对于最近从 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