Weil ich jedes Mal wieder am Frickeln bin, bis das Teil läuft, schreibe ich hier mal die nötigen Schritte zusammen. Ich habe die Installation nach Anleitung durchgeführt und den Bot so zum Laufen bekommen.
Die Anleitung beschreibt die Installation unter Windows 10.
Jeder registrierte Wikia-Benutzer darf diese Anleitung gerne verbessern oder ergänzen, solange die Informationen fundiert und getestet sind.
Installation seit 2019
Leider funktioniert die unter "Installation vor 2019" beschriebene Version nicht mehr. Hier nur in Kürze:
Python installieren:
- Download: https://www.python.org/downloads/windows/
- Version: 3.7.4
Pywikibot installieren gemäß Anleitung auf der Downloadseite:
- Download: https://www.mediawiki.org/wiki/Manual:Pywikibot/Installation#Install_Pywikibot
- Version: current stable version 18.07.2019 (Release version: 3.1.dev0, requests version: 2.22.0)
Die folgende Beschreibung gilt evtl. noch in Details, deshalb lösche ich sie (vorerst) nicht.
Ausführen der Skripte (in "cmd") nun per
pwb.py interwiki ...
statt wie früher
interwiki.py ...
Installation vor 2019
Einrichtung des Pywikibot unter Windows zur Benutzung bei Wikia
Installation Python
Python 2.7.x (nicht 3.x!) herunterladen von https://www.python.org/downloads/ und installieren.
Installation Pywikibot
Lauffähige Version vom Pywikibot herstellen in folgenden Schritten:
- TortoiseSVN herunterladen von https://tortoisesvn.net/downloads.de.html und installieren
- mit TortoiseSVN Revision 8888 von URL https://github.com/wikimedia/pywikibot-compat runterladen (Rechtsklick → TortoiseSVN → Export...), gebraucht wird der Inhalt des Verzeichnisses "trunk"
- Aktuelles "nightly" "compat.zip" runterladen von http://tools.wmflabs.org/pywikibot/ und in Ordner mit Revision 8888 kopieren, dabei keine (!) Dateien überschreiben.
Installation Editor
Falls kein gescheiter Editor vorhanden ist, Notepad++ herunterladen von https://notepad-plus-plus.org und installieren.
- Optional: Datei "npp.bat" im Bot-Verzeichnis erstellen mit Inhalt
start "" "C:\Program Files (x86)\Notepad++\notepad++.exe" %1
Damit können die Konfigurationsdateien sehr schnell aus der Konsole mit dem Befehl "npp <Dateiname>" geöffnet werden.
Einrichtung Konsole
Konsole einrichten in folgenden Schritten:
- Verknüpfung mit "C:\Windows\System32\cmd.exe" erstellen, z. B. auf dem Desktop. Rechtsklick -> Eigenschaften -> Erweitert: "Als Administrator ausführen" anhaken
- Unter Eigenschaften -> Layout die Puffergröße erhöhen, damit man bei viel Text noch im Fenster nach oben scrollen kann, Beispiel Höhe 1000; bei Bedarf auch die Fenstergröße erhöhen
- Optional: Alternativ kann Microsoft PowerShell verwendet werden, siehe Abschnitt "Nützliche Links". Die weitere Beschreibung orientiert sich an der Verwendung der sog. "Windows Eingabeaufforderung" (cmd.exe). Aufrufe der Python-Skripte erfolgen in der PowerShell immer in der Syntax ".\interwiki.py" statt nur "interwiki.py". Die Verwendung von PowerShell bietet möglicherweise Vorteile bei der Transkription.
Erstellung user-config.py
Benutzerkonfigurations-Datei erstellen in folgenden Schritten:
- Konsole über cmd-Verknüpfung aufrufen
- zum Botverzeichnis wechseln (hilfreiche Befehle: cd\; cd..; cd <Verzeichnis>; dir <Verzeichnis>; cls) (Anmerkung: zu jedem Befehl kann eine Hilfe mit "help <Befehl>" aufgerufen werden)
- bei Bedarf dir-Befehl konfigurieren mit "set dircmd=/p/a/ogn" für übersichtlichere Ausgabe
- "generate_user_files.py" ausführen (Anmerkung: Autovervollständigung von angefangenen Kommandos mit der Tabulator-Taste)
- Je nach Bedarf nur die user-config.py (1) erzeugen oder auch die "user_fixes.py" (3)
- Family "Wikia" wählen (34) (Hinweis: Wurde die Familie schon einmal aufgelistet, so wird sie in der Liste unter einer eigenen Nummer aufgezeichnet.)
- Sprache des zu bearbeitenden Wikis einstellen, zum Beispiel "de" für deutsch
- Benutzernamen angeben, in der Regel ist das der des Bot-Accounts
- Variante je nach Bedarf wählen, "small" reicht erstmal
- erstellte Datei mit einem Editor öffnen, zum Beispiel mit Befehl "npp user-config.py", falls für notepad++ eine Batchdatei eingerichtet wurde wie oben beschrieben
- im Eintrag "family = 'wikia'" das Wort wikia durch den Namen der entsprechenden Wiki-Family ersetzen (der Eintrag kann frei gewählt werden, muss aber bei der Erstellung der Family-Datei im folgenden Schritt exakt gleich angegeben werden)
- in der Zeile mit dem Benutzernamen ebenso das Wort Wikia durch den Family-Namen ersetzen
- bei Bedarf weitere Logins für andere Wikis ergänzen, zum Beispiel für andere Wikis der Wiki-Family
Erstellung Family-Datei
Family-Datei erstellen in folgenden Schritten:
- generate_family_file.py" ausführen
- vollständige URL des Wikis angeben, zum Beispiel http://meinwiki.wikia.com
- kurznamen der Family angeben, den gleichen wie in der "user-config.py"
- Bei Rückfrage wegen Interwiki-Links mit ja bestätigen
"Schon" fertig.
Beispiele für den Bot-Einsatz
- Textsuche mit Ausgabe in eine Textdatei
- Das Beispiel dient zur Erstellung einer Liste von Artikeln, die in einem weiteren Bot-Durchlauf bearbeitet werden sollen.
pagegenerators.py -family:inheritance -lang:en -search:"EXAMPLE" > c:\pywikibot\searchresult.txt
- Bild-Infovorlage ergänzen
- Das Beispiel ergänzt ganz oben auf Seiten im Dateinamensraum Beschreibungsvorlagen, falls diese noch nicht vorhanden sind.
add_text.py -family:community -lang:de -newimages:20 -except:"\{\{[Dd]ateiinfo" -up -summary:"ergänze [[Vorlage:Dateiinfo]]" -textfile:"c:\pydateiinfo.txt"
- Suchen und Ersetzen (1)
- Im Beispiel werden Links auf eine externe Seite durch eine Linkvorlage ersetzt.
- Ergänzen in Datei "fixes.py" (Anmerkung: für Hilfe zur Regex-Syntax siehe Abschnitt "Nützliche Links"):
# Custom replacement 'lotr': { 'regex': True, 'msg': { 'en':u'Robot: Automated text replacement', }, 'replacements': [ (r'(?i)\[http://tolkiengateway.net/wiki/(.*?) (.*?)\]', r"{{TGlink|\1}}"), ], },
- Aufrufen mit dem Befehl:
replace.py -fix:lotr -...
- Suchen und Ersetzen (2)
In diesem Beispiel werden Links, die wiki-intern sind, aber dennoch als vollständige URL in einfachen eckigen Klammern geschrieben sind, in die verkürzte Schreibweise mit doppelten eckigen Klammern umgewandelt. Damit die Links nicht in der Form "[[Test_1_2_3|Test 1 2 3]]" bestehen bleiben, sondern stattdessen in die Form "[[Test 1 2 3]]" verkürzt werden, muss in der user-config.py
cosmetic_changes = True
gesetzt sein.
Außerdem werden die Absatzklassen
<p class="MsoNormal">...</p>
entfernt, die gelegentlich in den Artikeln auftauchen. Die stammen, so vermute ich, aus Texten, die mit MS Word vorgeschrieben wurden.
Es werden in den URL alle Vokale mit Akut, Gravis, Zirkumflex sowie Trema erkennt und durch die entsprechenden Sonderzeichen ersetzt. Bei Bedarf müssen weitere Sonderzeichen hinzugefügt werden.
fixes = { 'extlink': { 'regex': True, 'msg': { '_default': u'Bot: Links korrigiert und/oder HTML-Code entfernt', }, 'replacements': [ (ur'<p class="MsoNormal">(.+?)</p>', ur"\1"), (ur"\?action\=edit\&redlink\=1", ur""), (ur'\[http://de\.lotr\.wikia\.com/wiki/(\S+) \1\]', ur"[[\1]]"), (ur'\[http://de\.lotr\.wikia\.com/wiki/(\S+) ([^]]+)\]', ur"[[\1|\2]]"), (ur'\[\[([^|]*)%28([^|]*)\|([^]]+)\]\]', ur"[[\1(\2|\3]]"), (ur'\[\[([^|]*)%29([^|]*)\|([^]]+)\]\]', ur"[[\1)\2|\3]]"), (ur'\[\[([^|]*)%C3%A1([^|]*)\|([^]]+)\]\]', ur"[[\1á\2|\3]]"), (ur'\[\[([^|]*)%C3%A9([^|]*)\|([^]]+)\]\]', ur"[[\1é\2|\3]]"), (ur'\[\[([^|]*)%C3%AD([^|]*)\|([^]]+)\]\]', ur"[[\1í\2|\3]]"), (ur'\[\[([^|]*)%C3%B3([^|]*)\|([^]]+)\]\]', ur"[[\1ó\2|\3]]"), (ur'\[\[([^|]*)%C3%BA([^|]*)\|([^]]+)\]\]', ur"[[\1ú\2|\3]]"), (ur'\[\[([^|]*)%C3%81([^|]*)\|([^]]+)\]\]', ur"[[\1Á\2|\3]]"), (ur'\[\[([^|]*)%C3%89([^|]*)\|([^]]+)\]\]', ur"[[\1É\2|\3]]"), (ur'\[\[([^|]*)%C3%8D([^|]*)\|([^]]+)\]\]', ur"[[\1Í\2|\3]]"), (ur'\[\[([^|]*)%C3%93([^|]*)\|([^]]+)\]\]', ur"[[\1Ó\2|\3]]"), (ur'\[\[([^|]*)%C3%9A([^|]*)\|([^]]+)\]\]', ur"[[\1Ú\2|\3]]"), (ur'\[\[([^|]*)%C3%A0([^|]*)\|([^]]+)\]\]', ur"[[\1à\2|\3]]"), (ur'\[\[([^|]*)%C3%A8([^|]*)\|([^]]+)\]\]', ur"[[\1è\2|\3]]"), (ur'\[\[([^|]*)%C3%AC([^|]*)\|([^]]+)\]\]', ur"[[\1ì\2|\3]]"), (ur'\[\[([^|]*)%C3%B2([^|]*)\|([^]]+)\]\]', ur"[[\1ò\2|\3]]"), (ur'\[\[([^|]*)%C3%B9([^|]*)\|([^]]+)\]\]', ur"[[\1ù\2|\3]]"), (ur'\[\[([^|]*)%C3%80([^|]*)\|([^]]+)\]\]', ur"[[\1À\2|\3]]"), (ur'\[\[([^|]*)%C3%88([^|]*)\|([^]]+)\]\]', ur"[[\1È\2|\3]]"), (ur'\[\[([^|]*)%C3%8C([^|]*)\|([^]]+)\]\]', ur"[[\1Ì\2|\3]]"), (ur'\[\[([^|]*)%C3%92([^|]*)\|([^]]+)\]\]', ur"[[\1Ò\2|\3]]"), (ur'\[\[([^|]*)%C3%99([^|]*)\|([^]]+)\]\]', ur"[[\1Ù\2|\3]]"), (ur'\[\[([^|]*)%C3%A2([^|]*)\|([^]]+)\]\]', ur"[[\1â\2|\3]]"), (ur'\[\[([^|]*)%C3%AA([^|]*)\|([^]]+)\]\]', ur"[[\1ê\2|\3]]"), (ur'\[\[([^|]*)%C3%AE([^|]*)\|([^]]+)\]\]', ur"[[\1î\2|\3]]"), (ur'\[\[([^|]*)%C3%B4([^|]*)\|([^]]+)\]\]', ur"[[\1ô\2|\3]]"), (ur'\[\[([^|]*)%C3%BB([^|]*)\|([^]]+)\]\]', ur"[[\1û\2|\3]]"), (ur'\[\[([^|]*)%C3%82([^|]*)\|([^]]+)\]\]', ur"[[\1Â\2|\3]]"), (ur'\[\[([^|]*)%C3%8A([^|]*)\|([^]]+)\]\]', ur"[[\1Ê\2|\3]]"), (ur'\[\[([^|]*)%C3%8E([^|]*)\|([^]]+)\]\]', ur"[[\1Î\2|\3]]"), (ur'\[\[([^|]*)%C3%94([^|]*)\|([^]]+)\]\]', ur"[[\1Ô\2|\3]]"), (ur'\[\[([^|]*)%C3%9B([^|]*)\|([^]]+)\]\]', ur"[[\1Û\2|\3]]"), (ur'\[\[([^|]*)%C3%A4([^|]*)\|([^]]+)\]\]', ur"[[\1ä\2|\3]]"), (ur'\[\[([^|]*)%C3%AB([^|]*)\|([^]]+)\]\]', ur"[[\1ë\2|\3]]"), (ur'\[\[([^|]*)%C3%AF([^|]*)\|([^]]+)\]\]', ur"[[\1ï\2|\3]]"), (ur'\[\[([^|]*)%C3%B6([^|]*)\|([^]]+)\]\]', ur"[[\1ö\2|\3]]"), (ur'\[\[([^|]*)%C3%BC([^|]*)\|([^]]+)\]\]', ur"[[\1ü\2|\3]]"), (ur'\[\[([^|]*)%C3%9F([^|]*)\|([^]]+)\]\]', ur"[[\1ß\2|\3]]"), ] },
- Aufrufen mit dem Befehl:
replace.py -fix:extlink -recursive -dotall ...
Nützliche Links
- https://de.wikipedia.org/wiki/Wikipedia:Pywikibot Beschreibung Pywikibot
- https://www.mediawiki.org/wiki/Manual:Pywikibot/de Handbuch Pywikibot
- https://www.mediawiki.org/wiki/Manual:Pywikibot/Compat/Installation Installation Pywikibot
- https://de.wikibooks.org/wiki/Batch-Programmierung:_Wichtige_DOS-Kommandos Wichtige DOS-Kommandos
- https://de.wikipedia.org/wiki/Regulärer_Ausdruck Allgemeine Informationen zum Thema Regex, es gibt im Netz auch jede Menge Tutorials dazu
- https://technet.microsoft.com/de-de/scriptcenter/dd742419.aspx?f=255&MSPPError=-2147217396 Skripterstellung mit Windows PowerShell
- https://www.branah.com/unicode-converter Tool zum Übersetzen von Klartext in Unicode, nützlich für Korrekturen der Namensräume in den Family-Dateien, falls andere Schriften oder fremdsprachige Umlaute verwendet werden