1

我想启动一个基于 mediaWiki 的站点,但不是手动添加类别和子类别,而是想以自动方式添加它们,我提供类似 xml 文件的内容,并且 bot/script/algorithm/... 遍历列表并自动创建类别和子类别及其页面。目前还没有页面,但我想从一组干净的类别开始,帮助用户对页面进行排序。

我找到了pywikipediabot,但我不知道如何将它用于我的目的 - 它似乎只适用于现有页面的类别。你会使用 pywikipediabot 来创建新类别的层次结构吗?如果是的话怎么做?xml文件可以用作模板吗?

4

2 回答 2

2

我找到了解决我最初批量创建类别的问题的解决方案,但是如果您知道更好的解决方案,我不会将该问题标记为已关闭 - 请发布。

MediaWiki 具有导入功能。使用您的管理员帐户转到

http://yourMediaWiki/index.php/Special:Import

这允许您选择导入一个 xml 文件,该文件必须遵循一定的结构:请参阅此处

对于名称为“测试类别”和文本“类别测试”的类别,您必须创建一个像这样的“页面”元素:

<page>
<title>Category:Test Category</title> <!-- Name of the category, don't forget to prefix with 'Categroy:' -->
<ns>14</ns> <!-- 14 is the namespace of categories -->
<id>n</id> <!-- identifier for category -->
<revision>
  <id>16</id> <!-- number of revision -->
  <timestamp>2013-02-10T22:07:46Z</timestamp> <!-- Creation date & time -->
  <contributor>
    <username>admin</username> <!-- Name of user who created the category -->
    <id>1</id> <!-- ID of the user -->
  </contributor>
  <comment></comment> <!-- Comment about the category. Can be left blank -->
  <sha1></sha1> <!-- sha1 hash can be left blank -->
  <text xml:space="preserve" bytes="1">Category Testing</text> <!-- It seems it doesn't matter what you write into the bytes attribute. -->
</revision>
</page>

如果要创建类别的层次结构,只需将父类别标签添加到文本元素中。假设类别应该是“父类别”类别的一部分,那么文本元素应该如下所示:

<text xml:space="preserve" bytes="1">Category Testing [[Category:Parent Category]]</text>
于 2013-02-11T15:57:34.533 回答
0

如果您能够启动并运行 pywikibot,那么您可以使用其 Category 类。Github 上的主要入口点搜索class Category(Page).

Mediawiki 中的类别基本上是标准页面,但在命名空间 14 中。要在类别中包含任何页面 - 包括作为类别的页面 - 在您包含的页面的 wikitext 中[[Category:<The-Category>]]

所以你可以做这样的事情

>>> import pywikibot as pwb
#Your site will be different than this
>>> testwiki = pwb.Site('en','test')
>>> catA = pwb.Category(testwiki, 'testCatA')
>>> catA.namespace()
14
>>> catA._text = u'[[Category:testCatB]]'
>>> catA.save()
Page [[test:Category:TestCatA]] saved

现在您有一个页面Category:TestCatA,它是Category:TestCatB.

于 2013-12-04T23:58:55.843 回答