将许多文本文件大量上传到MediaWiki

时间:2013-08-09 16:53:54

标签: mediawiki

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

每个文本文件的名称都是维基页面的标题。

一个文件的一个wiki页面。

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

也许要求你把它编码全部都是要求太多,所以你能告诉我至少应该用哪种语言来试一试吗?

2 个答案:

答案 0 :(得分:6)

您可能希望bot使用MediaWiki API为您创建文章。对于Python来说,最着名的僵尸框架可能是pywikipedia,但对于许多其他语言也有API libraries and bot frameworks

事实上,pywikipedia附带了一个名为pagefromfile.py的脚本,它可以完成你想要的东西。默认情况下,它会从单个文件创建多个页面,但如果您了解某些Python,则更改它应该不会太难。


实际上,如果这些文件在你的维基上运行的同一台服务器上(或者你可以在那里上传),那么你甚至根本不需要机器人:有一个名为{{3的MediaWiki maintenance script可以为你做的。您可以使用简单的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中importTextFile.php);因此,例如,文件directory/foo_bar.txt将被导入为页面“Foo bar”。如果您希望更好地控制页面命名,importTextFile.php还支持显式--title参数。或者您可以随时复制脚本并自行修改以更改页面命名规则。


聚苯乙烯。还有另一个名为turned that off的MediaWiki维护脚本与importTextFile.php几乎完全相同,只是它从标准输入读取页面文本,并且没有importTextFile.php的方便的默认页面命名规则。但是,使用Unix管道进行自动编辑非常方便。


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

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

  1. 要将文件 names 转换为UTF-8,请编辑mb_convert_encoding()底部附近的titleFromFilename()函数,并替换其最后一行:

    return $parts[0];
    

    使用:

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

    其中your-encoding应该是用于文件名的script(或auto尝试自动检测)。

  2. 要同时转换文件的内容,请在脚本的主要代码中更高一些类似的更改,替换行:

    $text = file_get_contents( $filename );
    

    使用:

    $text = file_get_contents( $filename );
    $text = mb_convert_encoding( $text, "UTF-8", "your-encoding" );
    

答案 1 :(得分:0)

在MediaWiki 1.27中,有一个新的维护脚本importTextFiles.php可以执行此操作。有关信息,请参阅https://www.mediawiki.org/wiki/Manual:ImportTextFiles.php。它改进了旧的(现在删除的)importTextFile.php脚本,因为它可以处理文件通配符,因此它允许一次导入许多文本文件。

相关问题