Páginas

Aviso

Este blog lleva inactivo desde el año 2011. Para ver mi actual web personal, entra en emilio.org.es.

martes, 19 de febrero de 2008

Curso de bots (I)

Wikipedia es muy grande, y hacer mantenimiento es una tarea tediosa y aburrida. Por fortuna, disponemos de unas bibliotecas que nos permiten automatizar estas tareas, para que un robot las haga mientras nosotros estamos tumbados en la cama leyendo un libro. O pensando más bots.

El lenguaje que utilizaremos en este curso es Python, además de un paquete llamado pywikipediabot (su nombre es descriptivo). Así que antes de nada deberías bajar el intérprete de Python, bajar pywikipediabot, y buscar algún manual de Python, ya que a pesar de que explicaré algunas cosas, la misión de este tutorial no es enseñar Python, sino enseñar a crear bots. El matiz es pequeño, pero importante. Por cierto, para programar los scripts puedes usar Notepad++, sino eres de la Iglesia de Emacs.

Se me olvidaba comentar algunos requisitos que debes tener para entender la mayor parte de este curso. Deberías saber lo básico de programación: asignaciones, sentencias condicionales (if-else), bucles (for, while), y hacer funciones. Esto cambia ligeramente de un lenguaje a otro, pero la esencia es la misma. Si no, igualmente podrás leer este curso aunque te costará más.

En este punto supongo que ya tienes instalado el intérprete de Python, que has extraido pywikipediabot en un directorio y que tienes una consola abierta (consola de MS-DOS en Windows, o shell en GNU/Linux). La consola puede abrirse en Windows desde "Inicio/Ejecutar" ejecutando "cmd.exe".

Utiliza el comando "cd" para llegar hasta el directorio donde está pywikipediabot. Ejecutamos "interwiki.py -start:! -autonomous". Todo lo pongo entre comillas pero tú no debes incluirlas.

Bien, desglosemos la línea de instrucciones que hemos escrito:

  • interwiki.py Es el script en python que queremos ejecutar (pone interwikis en artículos).
  • -start:! Es un parámetro de entrada al script. Nos sirve para decirle a partir de que artículo va a empezar a analizar. Poniendo ! nos aseguramos de que comienza al principio de todo. Si pusieramos -start:A nos estaríamos dejando sin analizar los artículos de años, por ejemplo, ya que son numéricos.
  • -autonomous Le indica al script que no nos pregunte una y otra vez sobre si poner interwikis aquí o allí, sino que funcione de manera autónoma.

Un momento, ¿a alguien le ha funcionado esto? Seguramente no, a menos que ya tuvieras los datos de tu bot escritos en un fichero llamado user-config.py. Debe haberte salido un error como el siguiente:

    Please create a file user-config.py, and put in there:

One line saying "mylang='language'"
One line saying "usernames['wikipedia']['language']='yy'"

...filling in your username and the language code of the wiki you want to work
on.

For other possible configuration variables check config.py.

Esto quiere decir que debes abrir tu editor, crear un nuevo fichero de texto, y escribir estos datos:

    family = 'wikipedia'
mylang = 'es'
usernames['wikipedia']['es'] = 'Mibot'

Cosas importantes a tener en cuenta. Yo que tú no le ponía un nick con tildes. Es posible ponérselas pero deberías incluir una u delante del nick, así u'Mibot'. Las tildes suelen dar errores, así que mejor evitarlas en los nombres de usuario. Otra cosa, supongo que te habrás dado cuenta de que necesitas registrar una cuenta de usuario para tu bot, antes de crear el user-config.py. Sino, corre a hacerle una. Yo tengo dos en Wikipedia en español: BOTijo y AVBOT. Como ves, la gente suele hacer juegos de palabras con BOT.

Bien, una vez que has escrito y guardado el user-config.py y has creado una cuenta para tu bot, todo debería ir como la seda. Posibles errores: no has elegido la codificación UTF-8, has escrito mal alguna de las palabras, la cuenta no existe, tecleaste mal la contraseña...

Hagamos la prueba de fuego. Escribe login.py y espera a que te pida el password. Si da error, revisa los pasos anteriores, si te sigue sin funcionar deja un comentario. Si te pide la contraseña, introdúcela, pero hazlo despacio y bien, que si te equivocas saltará el captcha en el servidor, y deberás hacer login tú mismo con la cuenta de tu bot mediante un navegador, escribir el captcha, y luego desloguearte. Esto es para resetear la protección del captcha.

Te has logueado, ahora puedes volver a escribir interwiki.py -start:! -autonomous y debería funcionar. Sino funciona, repasa los pasos, y si todavía no sale, ponte en contacto conmigo. Es posible que el bot no encuentre ningún interwiki que agregar, ya que los primeros artículos están muy revisados, casi todo el mundo empieza por el !. Empieza por la J o la M o la Z. Por cierto, vigila los cambios que hace tu bot y comprueba que están bien.

Yo que tú no utilizaría mucho el bot de interwikis, ya que es aburrido. A mi me gusta crear bots con funcionalidades nuevas y genuinas. De todas formas, asegúrate de pedir flag de bot antes de correr un bot masivamente. Si estás haciendo pruebas, menos de 25 ediciones al día o así, no suele resultar molesto. Pero aun así, si piensas seguir adelante con esto de los bots, hazte con un flag lo antes posible. Claro que para pedir flag debes decir que utilidad le darás al bot –y para darle utilidad antes debe hacer el script, saber cómo manejarlo y haber hecho pruebas– luego es un bucle que hay que romper por algún sitio. La gente, normalmente, lo rompe haciendo pruebas sin molestar e intermitentemente.

Bueno, has instalado todo lo necesario para programar bots, has metido los datos de la cuenta de tu bot y has ejecutado el script de interwikis. No es poco para ser la primera parte.

  • Nota: A veces es necesario poner la palabra python delante de cada línea de instrucciones en la consola, para invocar al intérprete de Python. Esto me pasa en Linux, pero no es necesario en Windows.

Licencia

Unless stated otherwise, the text of the blog posts is published under this Creative Commons license.
A menos que se indique otra cosa, el texto de las entradas del blog se publica bajo esta licencia Creative Commons.
Licencia de Creative Commons