Jump to content

WikiRobots

From FreeCAD Documentation
This page is a translated version of the page WikiRobots and the translation is 100% complete.
Роботы опасны по своей сути, так как могут автоматически причинить много вреда. Используйте их с особой осторожностью!

Обзор

Повторяющиеся задачи можно автоматизировать с помощью роботов или ботов, то есть программ, самостоятельно работающих в вики.

Естественные и наиболее часто используемые роботы для вики-сайтов предоставляются MediaWiki под названием Pywikibot. Полную информацию смотри в Руководство:Pywikibot.

В двух словах, Pywikibot - это набор скриптов на Python, способных использовать родной API вики для работы с вики-сайтами. Список API для вики FreeCAD можно посмотреть на сайте https://wiki.freecad.org/api.php

Для того чтобы использовать Pywikibot, вам необходимо:

  1. установите пакет Pywikibot
  2. настройте Pywikibot для работы с FreeCAD Wiki
  3. запустите скрипты, необходимые для выполнения поставленной задачи

Существует множество информации о том, как устанавливать, настраивать и использовать 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