Handbuch:Pywikibot/PAWS

This page is a translated version of the page Manual:Pywikibot/PAWS and the translation is 97% complete.
Siehe Wikitech:PAWS für weitere Details.

Dieses Dokument bietet eine schnelle, interaktive Übersicht von Pywikibot mithilfe eines Notebooks, das auf der Wikimedia Cloud Services-Umgebung unter Verwendung von PAWS gehostet wird.

Die PAWS-Konsole unterstützt Copy&Paste lediglich in auf Chromium basierenden Browsern. (Google Chrome, Opera, Safari und Microsoft Edge sollten funktionieren.) Wenn du einen anderen Browser verwendest, kannst du versuchen, mit dem Kontext-Menü zu arbeiten (Rechtsklick) oder du musst die Kommandos in diesem Tutorial manuell eintippen. Du kannst auch eine Bash-Datei anlegen, die den Befehl enthält und diese im Terminal mit bash file.sh ausführen.
Warnung Warnung: Alle Notebooks und Konsolen in PAWS können jederzeit ohne vorherige Benachrichtigung beendet werden. Wenn deine Aufgabe länger als ein paar Stunden dauert, solltest du sie an anderer Stelle (z. B. in Toolforge) ausführen.

Erstellen eines Wikimedia-Benutzerkontos

Um dieser schnellen Demonstration zu folgen, benötigst du lediglich ein Benutzerkonto bei einem Wikipedia/Wikimedia-Projekt. Benutze Special:CreateAccount, um eines anzulegen.

Wenn du ein Benutzerkonto erstellt hast, geh bitte auf https://test.wikipedia.org/ und stelle sicher, dass dein Benutzername in der oberen rechten Ecke auftaucht.

Wenn du ein neuer Wikimedia-Benutzer bist, logge dich mit deinem Konto auf Meta-Wiki, Wikipedia, Wikidata oder Wikimedia Commons ein. Lese und lösche in jedem dieser Projekte alle ausstehenden Nachrichten (ganz oben).

Einschreiben in ein Notebook

Um ein gehostetes Notebook zu starten, besuche bitte https://hub-paws.wmcloud.org/hub

Drücke auf "Sign in with MediaWiki" und anschließend auf "Allow", wenn du um die Erlaubnis für "Use OAuth for Authentication" gebeten wirst. Beim ersten Besuch von PAWS musst du einen Server erstellen. Klicke auf den grünen "Start my Server"-Button. Es ist normal, wenn es ein paar Minuten dauert, bis der neue Server hochgefahren ist.

Wenn dies abgeschlossen ist, wirst du zu einer URL umgeleitet, die wie https://paws.wmflabs.org/paws/user/<username>/tree aussieht.

Eine Konsole starten

Um eine neue interaktive Konsole zu öffnen,

  1. Gehe zu deiner PAWS Startseite
  2. Klicke auf "New" auf der rechten Seite
  3. Wähle "Terminal"
  4. Klicke: File > New > Terminal

Das wird ein neues Fenster mit der Linux-Eingabeaufforderung "$" öffnen.

Diese Konsole ist kein Emulator. Es ist eine echte Bash Shell, wie sie Teil einer Linux-Installation basierend auf einem Docker-Container ist. Also kann jeder Bash-Befehl und jeder auf Linux verfügbare und installierte Befehl verwendet werden.

Um einige der verfügbaren Befehle zu sehen, verwende ls /bin/.

$ ls /bin/
bash         cat            domainname  journalctl  mkdir          pwd         stty                            tar           zcmp
unzip2       chacl          echo        kill        mknod          rbash       su                              tempfile      zdiff
../..
$ ls /usr/bin/
2to3-3.4                 dvipdf                     lcf                         printf               systemd-path                         
X11                      dwp                        ld                          prlimit              systemd-run
../..

To see them all, press TAB twice.


Im Wiki einloggen

Dies wird dein Konto auf dem Server einrichten und dir erlauben, dich von der Kommandozeile aus einzuloggen. Der folgende Befehl sollte bestätigen, dass du sich auf https://test.wikipedia.org/ einloggen kannst. Da OAuth verwendet wird, wird kein Passwort benötigt.

$ pwb.py login
Logging in to wikipedia:test as <username>
Logged in on wikipedia:test as <username>.

Du kannst Pywikibot mit einem anderen Wiki verbinden, indem du eine Datei namens user-config.py in deinem $HOME directory (/home/paws) erstellst und die Variablen mylang und family hinzufügst:

mylang = 'test'
family = 'wikipedia'

You can type vim user-config.py in the terminal, then I to insert text, add the text, then Esc to exist insert mode, then :wq and Enter to finishing editing.


Eine Seite erstellen

Um eine Seite zu erstellen, gib den folgenden Befehl in die Konsole ein, wobei du "<username>" mit deinem Benutzernamen ersetzen und anschließend "Y" drücken musst, wenn du gefragt wirst, ob deine Änderungen übernommen werden sollen:

$ pwb.py add_text -up -talk -page:"User talk:<username>" -text:"Hello. ~~~~"
Loading User talk:<username>...

>>> User talk:<username> <<<
@@ -0,0 +1 @@
+ Hello. ~~~~

Do you want to accept these changes? ([Y]es, [N]o, [a]ll, open in [b]rowser): Y
Page [[User talk:<username>]] saved

Nun hast du das Wiki bearbeitet. Schau dir deine Änderungen an, indem du https://test.wikipedia.org/wiki/User_talk:<username> in deinem Browser öffnest.

Mit der Befehlszeilenoption '-help' kannst du mehr über jedes dieser Skripte erfahren.

$ pwb.py add_text -help
...

Eine Seite holen

Das Holen vieler Seiten wird durch den "listpages"-Befehl ermöglicht.

Um die Inhalte der erstellten Seite anzuzeigen, gib folgenden Befehl ein:

$ pwb.py listpages -page:"User talk:<username>" -save
   1 <username>
Saving User talk:<username> to /home/paws/User_talk_<username>
1 page(s) found

Wenn du jetzt $ ls laufen lässt, sollte die gespeicherte Seite sichtbar sein.

Ein echtes Skriptbeispiel

Wenn ein Website, die in der Wikipedia verwendet wird, ihre URL ändert, veralten die Links in der Wikipedia und werden möglicherweise auch unzugänglich, wenn die Website nicht von den alten URLs auf die neuen URLs umlenkt. So hat beispielsweise die Encyclopedia Britannica (EB) ihre Links geändert und die Seiten von http://www.britannica.com/EBchecked/media/ auf http://www.britannica.com/topic/[topic name]/images-videos/* umgestellt. Du findest eine Liste der Verwendungen der alten URL in der englischen Wikipedia unter w:Special:LinkSearch/http://www.britannica.com/EBchecked/media. All diese Links manuell zu aktualiseren wäre sehr zeitaufwändig. Glücklicherweise hat die EB Weiterleitungen von den alten URLs zu den neuen URLs eingerichtet, so dass dies nicht sofort behoben werden muss.

Ein einfacheres Beispiel wäre, dass das englische Wikipedia zurzeit Links zu http://britannica.com/EBchecked/ statt http://www.britannica.com/EBchecked/ enthält; es fehlt also das "www." als Subdomain in der URL.

Es gibt derzeit 14 Fälle in der englischen Wikipedia: w:Special:LinkSearch/http://britannica.com/EBchecked/

Wikipedia hat dieses Problem auch in anderen Sprachen. Zum Beispiel gibt es einen Fall in der deutschen Wikipedia: w:de:Spezial:Weblinksuche/http://britannica.com/EBchecked/

Um diese Links zu reparieren, können wir das Pywikibot-replace.py -Skript verwenden. In dieser Demonstration werden wir das "-simulate"-Argument verwenden, um keine echten Änderungen im Wiki vorzunehmen, da es strenge Regeln für das automatisierte Bearbeiten beim englischen Wikipedia gibt.

Zuerst betrachten wir alle Seiten, die zu http://britannica.com/EBchecked/ verlinken.

$ pwb.py listpages -lang:en -weblink:"britannica.com/EBchecked/"
   1 Bhatner fort
   2 Mohammad Ishaq Khan
   3 Fringe theories/Noticeboard/Archive 7
   4 El Riego phase
   5 Catalonia/Archive 4
   6 Stephen I of Hungary
   7 Stephen I of Hungary/Archive 1
   8 Väinö Tanner
   9 Tokaji
  10 Transylvania/Archive5
  11 Hungarians in Romania
  12 Transylvania
  13 Uttarakhand
  14 Françoise Giroud
14 page(s) found

Nun schauen wir, ob die Seiten tatsächlich die wörtliche URL enthalten, also keine Vorlage verwenden.

$ pwb.py listpages -lang:en -weblink:"britannica.com/EBchecked/" -grep:"britannica.com\/EBchecked"
   1 Bhatner fort
   2 Mohammad Ishaq Khan
   3 Fringe theories/Noticeboard/Archive 7
   4 El Riego phase
   5 Catalonia/Archive 4
   6 Stephen I of Hungary
   7 Stephen I of Hungary/Archive 1
   8 Väinö Tanner
   9 Tokaji
  10 Transylvania/Archive5
  11 Hungarians in Romania
  12 Transylvania
  13 Uttarakhand
  14 Françoise Giroud
14 page(s) found

Nun nutzen wir "replace", um das fehlende "www." hinzuzufügen.

$ pwb.py replace -lang:en -simulate -weblink:"britannica.com/EBchecked/" -grep:"britannica.com\/EBchecked" "http://britannica.com/EBchecked/" "http://www.britannica.com/EBchecked/"
The summary message for the command line replacements will be something like: Bot: Automated text replacement  (-http://britannica.com/EBchecked/ +http://www.britannica.com/EBchecked/)
Press Enter to use this automatic message, or enter a description of the
changes your bot will make: 
Logging in to wikipedia:en as <username>
Retrieving 14 pages from wikipedia:en.
Retrieving 14 pages from wikipedia:en.


>>> Stephen I of Hungary <<<
@@ -47 +47 @@
- Stephen's birth date is uncertain because it was not recorded in contemporaneous documents.{{sfn|Györffy|1994|p=64}} Hungarian and Polish chronicles written centuries later give three different years: 967, 969 and 975.{{sfn|Kristó|2001|p=15}} The unanimous testimony of his three late 11th-century or early 12th-century [[hagiographies]] and other Hungarian sources, which state that Stephen was "still an adolescent" in 997,<ref>''Hartvic, Life of King Stephen of Hungary'' (ch. 5), p. 381.</ref> substantiate the reliability of the later year (975).{{sfn|Györffy|1994|p=64}}{{sfn|Kristó|2001|p=15}} Stephen's ''[[Life of Saint Stephen, King of Hungary (Vita minor)|Lesser Legend]]'' adds that he was born in [[Esztergom]],{{sfn|Györffy|1994|p=64}}{{sfn|Kristó|2001|p=15}}<ref name=Britannica>{{cite encyclopedia|title=Stephen I|url=http://britannica.com/EBchecked/topic/565415/Stephen-I|encyclopedia=[[Encyclopædia Britannica]]|publisher=Encyclopædia Britannica, Inc.|year=2008|accessdate=2008-07-29}}</ref> which implies that he was born after 972 because his father, [[Géza, Grand Prince of the Hungarians]], chose Esztergom as royal residence around that year.{{sfn|Györffy|1994|p=64}} Géza promoted the spread of Christianity among his subjects by force, but never ceased worshipping pagan gods.{{sfn|Kontler|1999|p=51}}{{sfn|Berend|Laszlovszky|Szakács|2007|p=331}} Both his son's ''[[Life of Saint Stephen, King of Hungary (Vita maior)|Greater Legend]]'' and the nearly contemporaneous [[Thietmar of Merseburg]] described Géza as a cruel monarch, suggesting that he was a despot who mercilessly consolidated his authority over the rebellious Hungarian lords.{{sfn|Berend|Laszlovszky|Szakács|2007|p=331}}{{sfn|Bakay|1999|p=547}}
+ Stephen's birth date is uncertain because it was not recorded in contemporaneous documents.{{sfn|Györffy|1994|p=64}} Hungarian and Polish chronicles written centuries later give three different years: 967, 969 and 975.{{sfn|Kristó|2001|p=15}} The unanimous testimony of his three late 11th-century or early 12th-century [[hagiographies]] and other Hungarian sources, which state that Stephen was "still an adolescent" in 997,<ref>''Hartvic, Life of King Stephen of Hungary'' (ch. 5), p. 381.</ref> substantiate the reliability of the later year (975).{{sfn|Györffy|1994|p=64}}{{sfn|Kristó|2001|p=15}} Stephen's ''[[Life of Saint Stephen, King of Hungary (Vita minor)|Lesser Legend]]'' adds that he was born in [[Esztergom]],{{sfn|Györffy|1994|p=64}}{{sfn|Kristó|2001|p=15}}<ref name=Britannica>{{cite encyclopedia|title=Stephen I|url=http://www.britannica.com/EBchecked/topic/565415/Stephen-I|encyclopedia=[[Encyclopædia Britannica]]|publisher=Encyclopædia Britannica, Inc.|year=2008|accessdate=2008-07-29}}</ref> which implies that he was born after 972 because his father, [[Géza, Grand Prince of the Hungarians]], chose Esztergom as royal residence around that year.{{sfn|Györffy|1994|p=64}} Géza promoted the spread of Christianity among his subjects by force, but never ceased worshipping pagan gods.{{sfn|Kontler|1999|p=51}}{{sfn|Berend|Laszlovszky|Szakács|2007|p=331}} Both his son's ''[[Life of Saint Stephen, King of Hungary (Vita maior)|Greater Legend]]'' and the nearly contemporaneous [[Thietmar of Merseburg]] described Géza as a cruel monarch, suggesting that he was a despot who mercilessly consolidated his authority over the rebellious Hungarian lords.{{sfn|Berend|Laszlovszky|Szakács|2007|p=331}}{{sfn|Bakay|1999|p=547}}

Do you want to accept these changes? ([y]es, [N]o, [e]dit, open in [b]rowser, [a]ll, [q]uit): N

...

In PAWS wird bei jeder Konsole, die farbliche Darstellungen unterstützt, der Unterschied grün dargestellt, in unserem Fall das "www.", was uns das Finden der Änderungen erleichtert.

In Pywikbot

  Warnung: Schreibe keine Passwörter in Serverdateien, die Dateien sind öffentlich einsehbar!

Als nächstes werden wir die PAWS-Python-Sitzung verwenden.

  1. Gehe zur Startseite home
  2. Klicken auf "New" auf der rechten Seite
  3. Wähle 'Python 3' aus

Dies wird ein neues Fenster öffnen.

Gib folgendes in die Textbox ein und wähle im "Cell"-Menü den Befehl "Run" (oder alternativ Umschalt+Eingabe).

import pywikibot

Eine neue Textbox wird darunter erscheinen. Starte folgendes, um ein APISite-Objekt zu erschaffen, das mit https://test.wikipedia.org/ verbunden ist:

site = pywikibot.Site('test', 'wikipedia')

Beschreibe "site", indem du es in die neue Textbox eingibst und "Run" wählst.

site

Es sollte folgendes anzeigen

 Out[3]: APISite("test", "wikipedia")

Erzeuge ein Seitenobjekt:

page = pywikibot.Page(site, 'test')

Prüfe durch Aufrufen, ob es vorhanden ist:

page.exists()

Es sollte folgendes ausgeben

 VERBOSE:pywiki:Found 1 wikipedia:test processes running, including this one.
 Out[5]: True

Zeige den Text auf der Seite:

page.text

Ändere den Seitentext in dem Objekt:

page.text = 'Hello world'

Speichere die Seite im Wiki:

page.save()

Die Antwort sollte folgendermaßen lauten:

Page [[Test]] saved
INFO:pywiki:Page [[Test]] saved

Das interaktive Python 3-Notebook erlaubt es, viele Befehle zusammen auszuführen. Der obere Text kann auch in eine einzige Textbox eingegeben werden.

import pywikibot

site = pywikibot.Site('test', 'wikipedia')
page = pywikibot.Page(site, 'test')

page.text = 'Hello world!'
page.save()

Der Log der interaktiven Python-Sitzung kann für zukünftige Nachfrage gespeichert oder heruntergeladen werden.

Auf die Online-Dokumentation in PAWS zugreifen

Die Pywikibot-Dokumentation kann unter wmdoc:pywikibot gefunden werden. Sie basiert hauptsächlich auf docstrings, die im interaktiven Python 3-Notebook mithilfe der eingebauten Funktion help() geladen werden können.

Um zum Beispiel die Argumente für die Save-Methode oben anzusehen, führe entweder aus:

help(page.save)

oder

help(pywikibot.Page.save)

Pywikibot-Skripts bearbeiten

Die Pywikibot-Bibliothek und die Skripte befinden sich in /srv/paws und sind nur lesbar. Die installierte Pywikibot-Bibliothek kann nicht in PAWS bearbeitet werden.

Skripte können nach dem Kopieren in dein PAWS-Home-Verzeichnis modifiziert werden.

Um beispielsweise eine geänderte "checkimages.py" auszuführen:

  1. Gib in der Konsole cp /srv/paws/pwb/scripts/checkimages.py ~ ein
  2. Geh im Browser auf PAWS home klicke auf die Datei checkimages.py.
  3. Du kannst jetzt die Datei im Browser bearbeiten. Bearbeite den Code - füge zum Beispiel direkt nach dem Code start = time.time() in Zeile 1775 eine neue Zeile 1776 ein, die deinen Namen ausgibt: print("MYNAME's version.")
  4. Benutze das Datei-Menü im Editor und klicke auf "Speichern", um deine Änderungen zu sichern.
  5. Gib in der Konsole pwb.py ~/checkimages.py -simulate -limit:10 ein (If no '-limit:x' defined, the program would run until all images checked, it may take long time.)

Siehe auch


If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel connect or pywikibot@ mailing list.