Manual:Pywikibot/PAWS
- Véase Wikitech:PAWS para más detalles.
Este documento proporciona una visión general rápida e interactiva de Pywikibot usando una notebook alojada en el entorno Wikimedia Labs usando PAWS (PAWS: A Web Shell).
bash file.sh
.
Crea una cuenta Wikimedia
Para seguir esta guía solamente necesitas un cuenta de Wikipedia/Wikimedia. utiliza Especial:CrearCuenta para crear una.
Una vez hayas creado una cuenta por favor, visita https://test.wikipedia.org/ y comprueba que tu nombre de usuario aparece en la esquina superior derecha (esto funciona en torno a T120327).
Si eres un nuevo usuario en Wikimedia inicia sesión con tu cuenta en meta.Wikimedia, Wikipedia, Wikidata y Commons. Y en cada uno de ellos lee y borra todos los mensajes pendientes que tengas (en la parte superior).
Iniciar sesión en una notebook
Para iniciar una notebook alojada, ve a https://hub-paws.wmcloud.org/hub
Haz clic en "Sign in with MediaWiki", y haz clic en "Permitir" cuando te pregunte si apruebas el "Uso OAuth". La primera vez que accedes a PAWS necesitas crear un servidor. Haz clic en el botón verde "Start my Server". Es normal que tengas que esperar unos cuantos minutos para iniciar el nuevo servidor.
Una vez esté completado, serás redirigido a una URL como https://paws.wmflabs.org/paws/user/<nombre de usuario>/tree.
Iniciar una terminal
Para iniciar una nueva terminal interactiva:
- Ve al inicio de PAWS.
- Haz clic en 'New' en el lado derecho y selecciona 'Terminal'.
- click: File > New > Terminal
Esto abrirá una nueva ventana con la URL https://paws.wmflabs.org/paws/user/<nombre de usuario>/terminals/1, con una línea de comandos '$' de Linux.
Esta terminal no es un emulador. Es una cónsola bash real, parte de una instalación Linux establecida en un contenedor Docker, por lo que puedes utilizar cualquier comando bash, y usar cualquier comando disponible en el sistema Linux que ha sido instalado.
Para ver algunos comandos disponibles, usa 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.
Conectarse a la wiki
Esto conectará tu cuenta con el servidor y permitirá conectarse en la consola de comandas. El siguiente comando debería confirmar que puedes conectarte a la testwiki. Usa OAuth, por lo que no necesitas introducir una contraseña.
$ pwb.py login
Logging in to wikipedia:test as <username>
Logged in on wikipedia:test as <username>.
Puedes conectar pywikibot a una wiki diferente creando un archivo llamado user-config.py en tu directorio $HOME
(/home/paws
) y añadiendo las variables mylang y family.
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.
Crear una página
Para crear una página, introduce el siguiente comando en la terminal, sustituyendo '<username>' con tu nombre de usuario, y pulsa 'Y' cuando te lo solicite para aceptar tus cambios:
$ 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
Has editado la wiki. Puedes ver tus cambios abriendo https://test.wikipedia.org/wiki/User_talk:<nombre de usuario> en tu navegador web.
Puedes leer más sobre cada uno de estos scripts de línea de comandos con la opción '-help' de la línea de comandos.
$ pwb.py add_text -help
...
Extraer una página
Puedes extraer muchas páginas con el comando "listpages".
Para obtener el contenido de la página creada en la sección anterior, introduce el siguiente comando:
$ pwb.py listpages -page:"User talk:<username>" -save
1 <username>
Saving User talk:<username> to /home/paws/User_talk_<username>
1 page(s) found
Ahora deberías encontrar la página guardada en tu [$url lista de archivos PAWS].
Un ejemplo real de script
Cuando un sitio web usado en Wikipedia cambia sus URLs, los enlaces en Wikipedia se desactualizan, y posiblemente se conviertan en enlaces rotos si el sitio web no redirige desde las antiguas URLs a las nuevas. Por ejemplo, la Encyclopedia Britannica (EB) ha cambiado sus enlaces, moviendo sus páginas desde http://www.britannica.com/EBchecked/media/ a http://www.britannica.com/topic/[topic name]/images-videos/*. Puedes encontrar una lista de usos de la URL antigua en la Wikipedia en inglés en w:Special:LinkSearch/http://www.britannica.com/EBchecked/media. Actualizar todos estos enlaces manualmente consumiría mucho tiempo. Por suerte, EB ha mantenido redirecciones desde sus antiguas URLs a las nuevas URLs, por lo que no necesita ser corregido inmediatamente.
Para un ejemplo más simple, la Wikipedia en inglés actualmente contiene enlace a http://britannica.com/EBchecked/ en vez de a http://www.britannica.com/EBchecked/; es decir, falta el subdominio 'www.' en la URL.
En este momento hay 14 casos en la Wikipedia en inglés: https://en.wikipedia.org/wiki/Special:LinkSearch/http://britannica.com/EBchecked/
Wikipedia en otros idiomas también tiene este problema. Por ejemplo, hay un caso en la Wikipedia en alemán: https://de.wikipedia.org/wiki/Spezial:Weblinksuche/http://britannica.com/EBchecked/
Para arreglar todos estos enlaces, podemos usar el script replace.py de Pywikibot. En esta demostración usaremos el parámetro '-simulate' para evitar escribir la wiki, tal y como indican las reglas estrictas sobre las edición automática de la Wikipedia en español.
Primero, vamos a obtener un lista de las páginas con el enlace http://britannica.com/EBchecked/.
$ 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
Ahora comprobamos que estas páginas tenga de verdad la URL literal en la página; es decir, que no estén usando una plantilla.
$ 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
Ahora usamos 'replace' para añadir el subdominio "www." que falta.
$ 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
...
En PAWS, y en cualquier terminal con soporte de color, la diferencia de los cambios mostrará el "www." añadido en color verde, haciendo más fácil encontrar los cambios propuestos.
Dentro de Pywikibot
Lo siguiente será usar PAWS en una sesión de Python.
- Ve al inicio de PAWS.
- Haz clic en 'New' en el lado derecho y selecciona 'Python 3'.
Esto abrirá una nueva ventana.
En la caja de texto, introduce lo siguiente y en el menú 'Cell' selecciona 'Run' (o pulsa shift+enter para ejecutarlo).
import pywikibot
Aparecerá una nueva caja de texto. Ejecuta lo siguiente para crear un objeto APISite conectado a https://test.wikipedia.org/:
site = pywikibot.Site('test', 'wikipedia')
Describe "site" introduciéndolo en la nueva caja de texto y selecciona "Run".
site
Esto debería mostrar:
Out[3]: APISite("test", "wikipedia")
Crea un objeto "page":
page = pywikibot.Page(site, 'test')
Comprueba si existe ejecutando:
page.exists()
Esto debería mostrar:
VERBOSE:pywiki:Found 1 wikipedia:test processes running, including this one. Out[5]: True
Muestra el texto en la página:
page.text
Cambia el texto en la página:
page.text = 'Hello world'
Guarda la página en la wiki:
page.save()
Las respuesta debería ser:
Page [[Test]] saved
INFO:pywiki:Page [[Test]] saved
La notebook de Python 3 interactivo permite ejecutar muchas líneas juntas. Lo anterior podría ser colocado en una sola caja de texto y ejecutarse:
import pywikibot
site = pywikibot.Site('test', 'wikipedia')
page = pywikibot.Page(site, 'test')
page.text = 'Hello world!'
page.save()
El registro de tu sesión interactiva de Python puede guardarse o descargarse para una referencia futura.
Accediendo a la documentación online en PAWS
La documentación de Pywikibot se puede encontrar en https://doc.wikimedia.org/pywikibot. Está extraída principalmente de las docstrings, que pueden ser cargadas en la notebooks interactivas de Python 3 usando la función incorporada help().
Por ejemplo, para ver los argumentos para el método "save" anterior, funciona tanto:
help(page.save)
como
help(pywikibot.Page.save)
Editando scripts de Pywikibot
La librería Pywikibot y los scripts están localizados en /srv/paws, y son de solo-lectura. La librería Pywikibot instalada no puede ser modificada en PAWS.
Los scripts pueden ser modificados copiándolos a tu inicio de PAWS.
Por ejemplo, para ejecutar una modificación de "checkimages.py":
- En la terminal, introduce
cp /srv/paws/pwb/scripts/checkimages.py ~
- En el navegador, ve a tu inicio de PAWS y haz clic en el archivo
checkimages.py
. - Puedes editar el archivo en el navegador. Edita el código -- de momento, después del código
start = time.time()
en la línea 1775, añade una nueva línea (1776) que muestre tu nombre:print("MYNAME's version.")
- En la interfaz de edición, usa el menú "File" y haz clic en 'Save' para guardar tus modificaciones.
- En la terminal, introduce
pwb.py ~/checkimages.py -simulate -limit:10
(If no '-limit:x' defined, the program would run until all images checked, it may take long time.)
Véase también
- wikitech:PAWS/PAWS and Pywikibot
- Using Pywikibot with PAWS tutorial - A tutorial that helps users get started with using Pywikibot and PAWS
- Example notebooks using Pywikibot - A list of notebooks hosted on PAWS that use Pywikibot
- Chuleta de PAWS creada por un usuario (por ej., sobre la API el acceso a la base de datos).
- Source code on GitHub
- Small wiki toolkits workshop about running basic Pywikibot scripts
- Self-study materials based on the small wiki toolkits workshop
- Workshop handbook based on the small wiki toolkits workshop
- If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel connect or pywikibot@ mailing list.