Jump to content

Manual:Pywikibot/PAWS

From mediawiki.org
This page is a translated version of the page Manual:Pywikibot/PAWS and the translation is 92% complete.
Outdated translations are marked like this.
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).

Ten en cuenta que la terminal de PAWS solamente soporta "copiar" y "pegar" en los navegadores basados en Chromium (Google Chrome, Opera, Safari y el nuevo Microsoft Edge están bien). Si usas un navegador diferente, puedes intentarlo con el menú contextual (clic derecho) o necesitarás escribir manualmente los comandos mencionados en esta guía. También puedes crear un archivo bash que contenga el comando y luego ejecutar en la terminal con bash file.sh.
Advertencia Advertencia: Todos los portátiles y terminales de PAWS están sujetos a su cancelación sin previo aviso. Le recomendamos que ejecute su tarea en otros lugares (como Toolforge) si su tarea dura más de horas.

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:

  1. Ve al inicio de PAWS.
  2. Haz clic en 'New' en el lado derecho y selecciona 'Terminal'.
  1. 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

Advertencia Advertencia: No escribas contraseñas en los archivos del servidor, ¡son archivos públicos!

Lo siguiente será usar PAWS en una sesión de Python.

  1. Ve al inicio de PAWS.
  2. 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":

  1. En la terminal, introduce cp /srv/paws/pwb/scripts/checkimages.py ~
  2. En el navegador, ve a tu inicio de PAWS y haz clic en el archivo checkimages.py.
  3. 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.")
  4. En la interfaz de edición, usa el menú "File" y haz clic en 'Save' para guardar tus modificaciones.
  5. 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


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