【问题标题】:Running WikiMedia lua script or expanding API module output运行 WikiMedia lua 脚本或扩展 API 模块输出
【发布时间】:2018-11-19 15:46:17
【问题描述】:

我有两个具体问题,希望有人能回答其中一个:

  1. 有没有办法将 MediaWiki 的 mw 库提供给独立的 lua 脚本?
  2. 是否存在公开动态模块输出的 API 命令或属性?

背景:我试图弄清楚如何访问维基词典模块的输出(在本例中为pron-th)。这是一个可以由编辑器动态插入的模块,以显示泰语单词的音译(发音)。例如,每当编辑添加此行时:

 {{th-pron|ไคฺร่}}

...服务器将运行 here 记录的 Lua 脚本,并输出一个显示各种音译的表格 (example)。但是,在执行 API 请求 (example) 时明确排除了此输出,并且我找不到包含此数据的端点。并且直接运行 lua 脚本会失败,因为它缺少几个导入,例如mw.ustringmw.text 等,我相信它们是在 PHP 中定义的,包括更高的软件堆栈。我有丰富的 PHP 经验,但没有使用 Lua,所以在这里我有点不知所措。

没有直接调用每个页面并抓取数据,我想不出办法。

【问题讨论】:

    标签: php lua dependencies mediawiki


    【解决方案1】:

    MediaWiki mw 库是 Scribunto 扩展的一部分(参见 https://github.com/wikimedia/mediawiki-extensions-Scribunto/tree/master/includes/engines/LuaCommon/lualib),并且有很多依赖于 MEdiawikis php 核心,因此仅导入它并不容易。

    您可以通过像https://en.wiktionary.org/w/api.php?action=parse&text=%20{{th-pron|%E0%B9%84%E0%B8%84%E0%B8%BA%E0%B8%A3%E0%B9%88}}&contentmodel=wikitext 这样的 API 呈现该 wikitext 并解析输出,或者您可以尝试将 MediaWiki 特定的函数调用替换为对某些本机 Lua 库的其他函数调用。

    【讨论】:

    • 谢谢。现在,这确实看起来是正确的答案。很抱歉延迟接受。我不能 100% 确定没有 PHP 集成就无法运行 lua 脚本,但我自己看不到如何去做(双向依赖图跨越这样的解释语言真是太奇怪了)。只要我认为有可能让它发挥作用,我可能会继续努力。
    • 是的,Scribunto 的实现确实很有趣,他们确实有自己的 php 扩展来让它工作。
    猜你喜欢
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 2022-11-30
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多