我有很多文本文件要上传到运行MediaWiki的wiki.我甚至不知道这是否真的可行,但我想试一试.
每个文本文件的名称都是Wiki页面的标题.
一个文件的一个wiki页面.
我想从程序所在的文件夹中上传所有文本文件.
也许要求你对它进行编码就是要求太多,所以你能告诉我至少应该用哪种语言来试一试吗?
您可能想要的是使用MediaWiki API为您创建文章的机器人.可能最着名的bot框架是pywikipedia for Python,但也有许多其他语言的API库和bot框架.
实际上,pywikipedia附带了一个名为pagefromfile.py的脚本,它可以完成你想要的东西.默认情况下,它会从单个文件创建多个页面,但如果您了解某些Python,则更改它应该不会太难.
实际上,如果文件在同一台服务器上运行你的wiki(或者你可以在那里上传),那么你甚至根本不需要机器人:有一个名为importTextFile.php的MediaWiki 维护脚本可以为你做.您可以使用简单的shell脚本为给定目录中的所有文件运行它,例如:
for file in directory/*.txt; do
   php /path/to/your/mediawiki/maintenance/importTextFile.php "$file";
done
(显然,请替换directory包含文本文件的目录以及/path/to/your/mediawikiMediaWiki安装的实际路径.)
默认情况下,importTextFile.php将基于文件名创建页面的名称,剥离任何目录前缀和扩展名.此外,根据标准的MediaWiki页面命名规则,下划线将替换为空格,并且第一个字母将大写(除非您在LocalSettings.php中将其关闭); 因此,例如,文件directory/foo_bar.txt将被导入为页面"Foo bar".如果要更好地控制页面命名,importTextFile.php还支持显式--title参数.或者您可以随时复制脚本并自行修改以更改页面命名规则.
PS.还有另一个名为edit.php的 MediaWiki维护脚本与importTextFile.php几乎完全相同,只是它从标准输入读取页面文本,并且没有importTextFile.php的方便的默认页面命名规则.但是,使用Unix管道进行自动编辑非常方便.
附录: importTextFile.php脚本要求文件名和内容采用UTF-8编码.如果您的文件采用其他编码方式,则必须先修复它们或修改脚本以进行转换,例如使用mb_convert_encoding().
特别是,对脚本的以下修改应该这样做:
要将文件名转换为UTF-8,请编辑脚本底部附近的titleFromFilename()函数,并替换其最后一行:
return $parts[0];
有:
return mb_convert_encoding( $parts[0], "UTF-8", "your-encoding" );
这里your-encoding应该是字符编码用于您的文件名(或auto尝试自动检测).
要同时转换文件的内容,请在脚本的主代码内部进行更高的类似更改,替换以下行:
$text = file_get_contents( $filename );
有:
$text = file_get_contents( $filename );
$text = mb_convert_encoding( $text, "UTF-8", "your-encoding" );
| 归档时间: | 
 | 
| 查看次数: | 2813 次 | 
| 最近记录: |