gpt4 book ai didi

mediawiki - 批量上传许多文本文件到 MediaWiki

转载 作者:行者123 更新时间:2023-12-04 18:43:57 33 4
gpt4 key购买 nike

我有很多文本文件要上传到运行 MediaWiki 的 wiki。
我什至不知道这是否真的可能,但我想试一试。

每个文本文件的名称将是 wiki 页面的标题。

一个 wiki 页面对应一个文件。

我想从程序所在的同一文件夹中上传所有文本文件。

也许让你编写所有代码的要求太多了,所以你能告诉我至少我应该寻找哪种语言来试一试吗?

最佳答案

您可能想要的是 bot使用 MediaWiki API 为您创建文章.最著名的机器人框架可能是 pywikipedia对于 Python,但有 API libraries and bot frameworks也适用于许多其他语言。

事实上,pywikipedia 自带了一个脚本,名为 pagefromfile.py这确实非常接近您想要的东西。默认情况下,它从单个文件创建多个页面,但是如果您了解一些 Python,那么更改它应该不会太难。

实际上,如果文件位于您运行 wiki 的同一台服务器上(或者您可以将它们上传到那里),那么您甚至根本不需要机器人:有一个 MediaWiki maintenance scriptimportTextFile.php可以为您做到。您可以使用简单的 shell 脚本为给定目录中的所有文件运行它,例如:

for file in directory/*.txt; do
php /path/to/your/mediawiki/maintenance/importTextFile.php "$file";
done

(显然,将 directory 替换为包含文本文件的目录,将 /path/to/your/mediawiki 替换为 MediaWiki 安装的实际路径。)

默认情况下,importTextFile.php 将基于文件名创建页面的名称,去除任何目录前缀和扩展名。此外,根据标准的 MediaWiki 页面命名规则,下划线将被空格替换,第一个字母将大写(除非您在 LocalSettings.php 中设置了 turned that off);因此,例如,文件 directory/foo_bar.txt将作为页面“Foo bar”导入。如果您想更好地控制页面命名,importTextFile.php 还支持显式 --title范围。或者您可以随时复制脚本并自行修改以更改页面命名规则。

附言。还有另一个名为 edit.php 的 MediaWiki 维护脚本。它与 importTextFile.php 的作用几乎相同,除了它从标准输入读取页面文本并且没有 importTextFile.php 方便的默认页面命名规则。不过,它对于使用 Unix 管道的自动编辑来说非常方便。

附录: importTextFile.php 脚本要求文件名和内容采用 UTF-8 编码。如果您的文件采用其他编码,则必须先修复它们或修改脚本以进行转换,例如使用 mb_convert_encoding() .

特别是,对脚本的以下修改应该做到这一点:

  • 要将文件名转换为 UTF-8,请编辑靠近 script 底部的 titleFromFilename() 函数。 ,并替换其最后一行:

    return $parts[0];

    和:

    return mb_convert_encoding( $parts[0], "UTF-8", "your-encoding" );

    哪里your-encoding应该是 character encoding用于您的文件名(或 auto 以尝试自动检测)。
  • 要同时转换文件的内容,请在脚本的主代码内部进行类似的更改,替换以下行:

    $text = file_get_contents( $filename );

    和:

    $text = file_get_contents( $filename );
    $text = mb_convert_encoding( $text, "UTF-8", "your-encoding" );
  • 关于mediawiki - 批量上传许多文本文件到 MediaWiki,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18151825/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com