From FreeCAD Documentation
Jump to: navigation, search
Robots are intrinsically dangerous as they can automatically do a lot of damage. Use with extreme care!


Repetitive tasks can be automated using robots or bots, i.e. software programs operating on the wiki by themselves.

The natural and most commonly used robots for wiki sites are provided by MediaWiki, under the package name Pywikibot. See Manual:Pywikibot for the full information.

In a nutshell, Pywikibot is a collection of Python scripts able to use the native wiki API to act on wiki sites. To see the API list for the FreeCAD wiki, visit

In order to use Pywikibot, you need to:

  1. install the Pywikibot package
  2. configure Pywikibot to work on the FreeCAD Wiki
  3. launch the scripts you need for the task at hand

There is a wealth of information on how to install, configure and use Pywikibot. However, please be aware that this information, although useful, can be misleading, since it mixes instructions related to two different Pywikibot codebases, and different versions of the Pywikibot scripts collection.

In the following, you will find the basic instructions to set up and use Pywikibot on the FreeCAD wiki. This will allow you to perform the most common tasks. For advanced usage, refer to the Manual:Pywikibot, and to the Python source code.


Go to and download package/pywikipedia/ (the project is also under github, gerrit, etc. but this is a simple way to get a full self-contained package).

Unzip the content in your preferred directory.

Unless you want to install the libraries into your Python libs, you are done (if you still want to install them, check the file INSTALL in the base directory).

Pywikibot works with Python 2.6 and 2.7 with no issues. Python 3 has been not tested so far with FreeCAD wiki.


You must save the following Python code as a file with the name in the base directory where you unzipped package/pywikipedia/ (to be clear, in the same directory where you already find a file called

# -*- coding: cp437  -*-
family = 'freecadwiki'
mylang = 'en'
usernames['freecadwiki']['en'] = u'<<yourWikiUserName>>'
#usernames['freecadwiki']['freecadwiki'] = u'<<yourWikiUserName>>'
console_encoding = 'cp437'

In the above code:

  • replace <<yourWikiUserName>> with your Wiki user name
  • replace cp437 with your console_encoding. To find out what is your console encoding, for Windows and Linux, launch the Python interpreter, enter import sys followed by print sys.stdout.encoding. Python will write your console_encoding on the screen.

Then you must save the following Python code as a file with the name under the sub-directory /pywikibot/families (together with the other files).

# -*- coding: utf-8  -*-

__version__ = '$Id: 7f3891c3bbbfbd69c0b005de953514803d783d92 $'

from pywikibot import family

# The MediaWiki family
# usernames['mediawiki']['mediawiki'] = 'User name'
class Family(family.WikimediaFamily):
    def __init__(self):
        super(Family, self).__init__() = 'freecadwiki'

        self.langs = {
            'en': '',

    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


You are now all set to launch the Pywikibot scripts. The scripts themselves are contained in the /scripts subdirectory, from which you can know the names.

To launch the scripts, open a shell and move to the base directory (the installation one, NOT the /scripts subdirectory), and write

python <<scriptname>>.py -<<parameter>>

where of course you replace <<scriptname>> with the name of the script you are interested in, and <<parameter>> with the parameter(s) required for the given script.

To have a description of the usage and parameters of any script, simply use the -help parameter. For instance, to have a description of the script (one of the most useful), type

python -help

There is another very useful parameter, valid for all the scripts, called -simulate, that allows you to test commands without harming the Wiki. Use it, before going 'live'.


This command will log into the wiki

This command will print a list of all the pages containing a link to SourceForge

This command will replace all the links to the old SourceForge Forum with a link to the new Forum "" ""

This command will print a list of all the pages containing the word 'PartDesign', starting with the page titled "2d Drafting Module" and going on alphabetically -start:"2d Drafting Module" -grep:PartDesign

This command will replace all the secure links to the old SourceForge Forum with a link to the new Forum in the translated pages -start:Translations:! "" ""