“推土机”架构是一个灰机推荐的MediaWiki数据维护方法,由灰机团队在实践中不断摸索、改进并总结归纳。目前主要的维护者是SerGawenYuee
“推土机”架构示意图

概述

推土机的目的是将维基上数据化的内容结构性的剥离,通过bot和脚本工具藉由Semantic MediaWiki来更新、维护和展示。

  • 描述、介绍、解释文字由用户通过常规方式直接在页面编辑更新。
  • 数据通过存储在对应页面的data页面,可以由管理员手动维护,也可以通过脚本和bot批量更新,提高内容的准确性和更新速度。
  • 核心是SemanticMediaWiki。

发展过程

雏形

推土机的雏形在灰机平台最早出现在黑魂维基的实验性内容更新过程之中,由Namingishard通过pywikibot将dota的相关数据整理到文章页面上,为了避免bot和脚本在更新内容时覆盖、影响到页面上已有的内容,往往需要写很复杂的正则表达式或者预留替换字符。在发觉了其中的不便之后,SerGawen在制作dota维基的时候,开始将页面存在主页面的子页面中,例如"风行者/data"。后来发现这样data页面会被计入主空间,作为文章页被feed流推送,于是决定新建一个叫做“Data”的命名空间,通过dota维基制作过程中的反复摸索,结合国外的Starbounder维基中的相关方法,最终形成了一整套数据存储、调用的方法架构。并在factorio、Civ6等维基的创建过程中不断完善。

成熟

在第一阶段,数据仍借由线下整理文本,通过符合pywikibot格式的文本导入到线上,Yuee的excel表格更新工具为这一模式带来了质变,在结合灰机的接口、参数配置重新设计为灰机数据更新器后,这一工具能够快捷、高效的读写data命名空间的内容,由于自带GUI,大大降低了使用门槛,使得一般编辑者和站点管理员也能够快速学会使用,因而提供了更多可能性。现在“推土机”架构已经走出了游戏领域,在冰与火之歌等文学、影视体裁的站点也成功得到了广泛应用。

数据整理

Excel—Updater

这是我们最为推荐的方式,在灰机Updater出现之后,已经不需要用户通过命令行来操作Pywikibot,现在所有的线下工作均可以通过Excel表格的整理来实现。这一方法适用性最广。

  • 需要使用者熟悉Excel的表达式、公式或者vba脚本。

JSON/XML/CSV

对于JSON/XML/CSV格式的数据,我们有两种方法:

  1. 对于结构简单的JSON/CSV/XML,可以使用MediaWiki的扩展ExternalData来读写操作。
    1. ExternalData还可以直接读取站外的API。
  2. 对于复杂的通用数据格式,JSON/CSV/XML/YML等可以直接保存为页面,可以利用Lua模块处理为Lua Table格式,再通过{{#invoke}}访问其中的数据。这里介绍一个实践,可参阅Dota维基使用的Trans模板,其中的数据访问存储在MediaWiki:Huiji-translation-pairs

数据获取

数据获取不在推土机架构的范畴之内,由各位各显神通自行获得,可以是表格,也可以是爬虫,也可以是API,也可以是拆包、逆向得来的源文件。

avatar