WikiRoboter

From FreeCAD Documentation
Revision as of 19:13, 16 September 2020 by Maker (talk | contribs)
Roboter sind von Natur aus gefährlich, da sie automatisch viel Schaden anrichten können. Verwende sie mit äußerster Vorsicht!

Übersicht

Wiederkehrende Aufgaben können mit Hilfe von Robotern oder Bots automatisiert werden, d.h. mit Softwareprogrammen, die selbstständig auf dem Wiki arbeiten.

Die natürlichen und am häufigsten verwendeten Roboter für Wiki Seiten werden von MediaWiki unter dem Paketnamen Pywikibot zur Verfügung gestellt. Siehe Handbuch:Pywikibot für die vollständigen Informationen.

Kurz gesagt, Pywikibot ist eine Sammlung von Python Skripten, die die native Wiki API verwenden können, um auf Wiki Seiten zu agieren. Um die API Liste für das FreeCAD Wiki zu sehen, besuche http://www.freecadweb.org/wiki/api.php

Um Pywikibot verwenden zu können, musst du dies tun:

  1. installiere das Pywikibot Paket
  2. konfiguriere Pywikibot so, dass es im FreeCAD Wiki funktioniert
  3. starte die Skripte, die du für die anstehende Aufgabe benötigst

Es gibt eine Fülle von Informationen über die Installation, Konfiguration und Benutzung von Pywikibot. Bitte beachte jedoch, dass diese Informationen zwar nützlich, aber auch irreführend sein können, da sie Anweisungen vermischen, die sich auf zwei verschiedene Pywikibot Codebasen und verschiedene Versionen der Pywikibot Skriptsammlung beziehen.

Im Folgenden findest du die grundlegenden Anweisungen zum Einrichten und Verwenden von Pywikibot im FreeCAD Wiki. Damit kannst du die gängigsten Aufgaben durchführen. Für fortgeschrittene Nutzung findest du das Handbuch:Pywikibot und den Python Quellcode.

Einrichtung

Gehe zu http://tools.wmflabs.org/pywikibot/ und lade package/pywikipedia/core.zip herunter (das Projekt steht auch unter github, gerrit, usw., aber dies ist ein einfacher Weg, um ein vollständig in sich geschlossenes Paket zu erhalten).

Entpacke den Inhalt in deinem bevorzugten Verzeichnis.

Wenn du die Bibliotheken nicht in deine Python Bibliotheken installieren willst, bist du fertig (wenn du sie immer noch installieren willst, überprüfe die Datei INSTALL im Basisverzeichnis).

Pywikibot funktioniert mit Python 2.6 und 2.7 ohne Probleme. Python 3 wurde bisher nicht mit FreeCAD wiki getestet und funktioniert ebenfalls.

Konfiguration

Du musst den folgenden Python Code als Datei mit dem Namen user-config.py in dem Basisverzeichnis speichern, in das du entpackt hast package/pywikipedia/core.zip (zur Verdeutlichung: im gleichen Verzeichnis, in dem sich bereits eine Datei namens user-config.py.sample befindet).

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

Im obigen 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 freecadwiki_family.py under the sub-directory /pywikibot/families (together with the other family_xxx.py files).

# -*- 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

Anwendung

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 pwb.py <<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 replace.py script (one of the most useful), type

python pwb.py replace.py -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'.

Beispiele

Dieser Befehl loggt sich in das Wiki ein

pwb.py login.py


Dieser Befehl druckt eine Liste aller Seiten, die einen Verweis auf SourceForge enthalten

pwb.py listpages.py -weblink:sourceforge.net


Dieser Befehl ersetzt alle Verweise auf das alte SourceForge Forum durch einen Verweis auf das neue freecadweb.org bereitgestellte Forum

pwb.py replace.py -weblink:sourceforge.net/apps/phpbb/free-cad "sourceforge.net/apps/phpbb/free-cad" "forum.freecadweb.org"


Dieser Befehl druckt eine Liste aller Seiten, die das Wort "PartDesign" enthalten, beginnend mit der Seite "2d Drafting Module" und weiter alphabetisch geordnet

pwb.py listpages.py -start:"2d Drafting Module" -grep:PartDesign


Dieser Befehl ersetzt alle sicheren Verweise auf das alte SourceForge Forum durch einen Verweis auf das neue freecadweb.org bereitgestellte Forum auf den übersetzten Seiten.

pwb.py replace.py -start:Translations:! "https://sourceforge.net/apps/phpbb/free-cad" "http://forum.freecadweb.org"

FreeCAD Wiki Verwandte Befehle

Zählt alle Seiten, in denen eine bestimmte Wiki Vorlage verwendet wird

python3 pwb.py templatecount -count GuiCommand


Alle Seiten auflisten, in denen eine bestimmte Wiki Vorlage verwendet wird

python3 pwb.py templatecount -list GuiCommand

Ersetze eine Zeichenfolge in allen Seiten, die in der Kategorie Arch aufgeführt sind (a/k/a)

python3 pwb.py replace.py -cat:Arch