Автоматизированные альтернативы созданию иерархических категорий в MediaWiki вручную?
Я хочу запустить сайт на основе mediaWiki, но вместо того, чтобы вручную добавлять категории и подкатегории, я хочу добавить их в автоматическом режиме, где я предоставляю что-то вроде файла XML, а бот / скрипт / алгоритм /... проходит по списку и автоматически создает категории и подкатегории со своими страницами. Страниц еще нет, но я хочу начать с чистого набора категорий, помогающих пользователям сортировать страницы.
Я нашел pywikipediabot, но не могу понять, как использовать его в своих целях - кажется, он работает только для категорий существующих страниц. Вы бы использовали Pywikipediabot для создания иерархий новых категорий, и если да, то как? Можно ли использовать XML-файл в качестве шаблона?
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>
Если вы можете запустить и запустить pywikibot, вы можете использовать его класс Category. Главная точка входа на Github поискclass Category(Page)
,
Категории в Mediawiki, в основном, являются стандартными страницами, но в пространстве имен 14. Чтобы включить любую страницу в категорию - включая страницу, которая является категорией - в вики-тексте страницы, которую вы включаете [[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
,