WikiRobots
Обзор
Повторяющиеся задачи можно автоматизировать с помощью роботов или ботов, то есть программ, самостоятельно работающих в вики.
Естественные и наиболее часто используемые роботы для вики-сайтов предоставляются MediaWiki под названием Pywikibot. Полную информацию смотри в Руководство:Pywikibot.
В двух словах, Pywikibot - это набор скриптов на Python, способных использовать родной API вики для работы с вики-сайтами. Список API для вики FreeCAD можно посмотреть на сайте https://wiki.freecad.org/api.php
Для того чтобы использовать Pywikibot, вам необходимо:
- установите пакет Pywikibot
- настройте Pywikibot для работы с FreeCAD Wiki
- запустите скрипты, необходимые для выполнения поставленной задачи
Существует множество информации о том, как устанавливать, настраивать и использовать Pywikibot. Однако помните, что эта информация, хотя и полезная, может вводить в заблуждение, поскольку в ней смешаны инструкции, относящиеся к двум разным кодовым базам Pywikibot и разным версиям коллекции скриптов Pywikibot.
Ниже вы найдёте основные инструкции по настройке и использованию Pywikibot в FreeCAD wiki. Это позволит вам выполнять самые распространённые задачи. Для более продвинутого использования обратитесь к Руководству:Pywikibot, а также к исходному коду на Python.
Установка
Зайдите на https://web.archive.org/web/20250616133422/https://pywikibot.toolforge.org/ и скачайте package/pywikipedia/core.zip (проект также находится на github, gerrit и т. д., но это простой способ получить полный автономный пакет).
Распакуйте содержимое в нужный вам каталог.
Если вы не хотите устанавливать библиотеки в папку Python libs, вы закончили (если вы всё ещё хотите установить их, проверьте файл INSTALL в базовом каталоге).
Pywikibot работает с Python 2.6 и 2.7 без проблем. Python 3 пока не тестировался с FreeCAD wiki тоже работает.
Настройка
Вы должны сохранить следующий Python-код в виде файла с именем user-config.py в базовом каталоге, куда вы распаковали package/pywikipedia/core.zip. (чтобы было понятно, в том же каталоге, где уже находится файл с именем user-config.py.sample).
# -*- coding: cp437 -*-
family = 'freecadwiki'
mylang = 'en'
usernames['freecadwiki']['en'] = u'<<yourWikiUserName>>'
#usernames['freecadwiki']['freecadwiki'] = u'<<yourWikiUserName>>'
console_encoding = 'cp437'
В приведённом выше коде:
- замените <<yourWikiUserName>> на ваше имя пользователя Wiki
- замените cp437 на console_encoding. Чтобы узнать кодировку консоли, в Windows и Linux запустите интерпретатор Python, введите import sys, а затем print sys.stdout.encoding. Python выведет на экран console_encoding.
Затем вы должны сохранить следующий Python-код в виде файла с именем freecadwiki_family.py в подкаталоге /pywikibot/families. (вместе с другими файлами family_xxx.py).
# -*- coding: utf-8 -*-
__version__ = '$Id: 7f3891c3bbbfbd69c0b005de953514803d783d92 $'
from pywikibot import family
# The MediaWiki family
# user-config.py: usernames['mediawiki']['mediawiki'] = 'User name'
class Family(family.WikimediaFamily):
def __init__(self):
super(Family, self).__init__()
self.name = 'freecadwiki'
self.langs = {
'en': 'www.freecadweb.org',
}
def scriptpath(self, code):
return 'wiki'
def path(self, code):
return '/index.php' #The path of index.php, look at your wiki address.
def apipath(self, code):
return '/api.php' #The path of api.php
def version(self, code):
# Replace with the actual version being run on your wiki
return '1.20.3'
def protocol(self, code):
"""
Can be overridden to return 'https'. Other protocols are not supported.
"""
return 'http'
#return 'https' # My server uses https
Применение
Теперь вы готовы к запуску скриптов Pywikibot. Сами скрипты находятся в подкаталоге /scripts, из которого вы можете узнать их названия.
Чтобы запустить скрипты, откройте командную оболочку, перейдите в базовый каталог (установочный, а не в подкаталог /scripts) и напишите
python pwb.py <<scriptname>>.py -<<parameter>>
разумеется, замените <<scriptname>> на имя интересующего вас скрипта, а <<parameter>> на параметр(ы), необходимые для данного скрипта.
Чтобы получить описание использования и параметров любого скрипта, просто используйте параметр -help. Например, чтобы получить описание скрипта replace.py (одного из самых полезных), введите
python pwb.py replace.py -help
Есть ещё один очень полезный параметр, действительный для всех скриптов, называемый -simulate, который позволяет тестировать команды без вреда для Вики. Используйте его перед запуском.
Примеры
Эта команда позволит войти в вики
pwb.py login.py
Эта команда выведет список всех страниц, содержащих ссылку на SourceForge
pwb.py listpages.py -weblink:sourceforge.net
Эта команда заменит все ссылки на старый форум SourceForge ссылками на новый форум freecad.org.
pwb.py replace.py -weblink:sourceforge.net/apps/phpbb/free-cad "sourceforge.net/apps/phpbb/free-cad" "forum.freecad.org"
Эта команда выведет список всех страниц, содержащих слово PartDesign, начиная со страницы с заголовком "2d Drafting Module" и далее в алфавитном порядке
pwb.py listpages.py -start:"2d Drafting Module" -grep:PartDesign
Эта команда заменит все безопасные ссылки на старый форум SourceForge ссылкой на новый форум freecad.org на переведённых страницах
pwb.py replace.py -start:Translations:! "https://sourceforge.net/apps/phpbb/free-cad" "https://forum.freecad.org"
Команды, связанные с FreeCAD Wiki
Подсчитать все страницы, на которых используется определённый wiki шаблон
python3 pwb.py templatecount -count GuiCommand
Список всех страниц, на которых используется определённый вики-шаблон
python3 pwb.py templatecount -list GuiCommand
Заменяет строку на всех страницах, перечисленных в категории Arch
python3 pwb.py replace.py -cat:Arch