我有很多文本文件要上传到运行MediaWiki的wiki中。我甚至不知道这是否真的有可能,但我想试一试。
每个文本文件的名称将是wiki页面的标题。
一个文件的一个wiki页面。
我想上传所有的文本文件从同一个文件夹与程序在一起。
也许要求你编写代码太麻烦了,所以你能告诉我至少我应该找哪种语言来试一试吗?
发布于 2013-08-09 21:11:25
您可能需要的是一个bot来使用MediaWiki API为您创建文章。最著名的bot框架可能是维基百科 for Python,但对于许多其他语言也有API库和bot框架。
事实上,pywikipedia附带了一个名为pagefromfile.py的脚本,它做的事情非常接近您的需要。默认情况下,它从一个文件中创建多个页面,但是如果您知道一些Python,那么更改它应该不会太困难。
实际上,如果这些文件位于您的wiki运行的同一台服务器上(或者您可以将它们上传到那里),那么您甚至根本不需要一个机器人:有一个名为MediaWiki 维护脚本的importTextFile.php可以帮您做到这一点。您可以使用一个简单的shell脚本对给定目录中的所有文件运行它,例如:
for file in directory/*.txt; do
php /path/to/your/mediawiki/maintenance/importTextFile.php "$file";
done
(显然,用包含文本文件的目录替换directory
,用MediaWiki安装的实际路径替换/path/to/your/mediawiki
。)
默认情况下,importTextFile.php将以文件名为基础,删除任何目录前缀和扩展名。此外,根据标准的MediaWiki页面命名规则,下划线将被空格替换,第一个字母将被大写(除非您在LocalSettings.php中有把它关掉 );因此,例如,文件directory/foo_bar.txt
将作为页面"Foo“导入。如果希望对页面命名进行更精细的控制,importTextFile.php还支持显式--title
参数。或者,您可以始终复制脚本并自己修改它,以更改页面命名规则。
Ps。还有另一个名为MediaWiki的edit.php维护脚本,它执行与importTextFile.php几乎相同的操作,只不过它从标准输入中读取页面文本,并且没有importTextFile.php方便的默认页面命名规则。不过,使用Unix管道进行自动编辑非常方便。
增编: importTextFile.php脚本要求文件名和内容在UTF-8编码中。如果您的文件采用其他编码方式,则必须首先修复它们,或者修改脚本来进行转换,例如使用编码()。
特别是,对脚本的下列修改应该做到这一点:
your-encoding
应该是用于文件名的字符编码 (或尝试自动检测的auto
)。发布于 2016-08-11 10:26:38
在MediaWiki 1.27中,有一个新的维护脚本importTextFiles.php可以做到这一点。有关信息,请参见https://www.mediawiki.org/wiki/Manual:ImportTextFiles.php。它改进了旧的(现在删除的) importTextFile.php脚本,因为它可以处理文件通配符,因此它允许同时导入多个文本文件。
https://stackoverflow.com/questions/18151825
复制相似问题