Pywikibot es una poderosa herramienta de software diseñada para automatizar tareas repetitivas en Wikipedia y otros proyectos Wikimedia. Es un marco de trabajo (framework) escrito en Python que permite a los usuarios interactuar de manera programática con las APIs de MediaWiki, facilitando desde ediciones sencillas hasta operaciones masivas en múltiples páginas. Su importancia radica en su capacidad para ahorrar tiempo y esfuerzo, especialmente en proyectos grandes o complejos, permitiendo a los usuarios enfocarse en tareas más creativas y menos repetitivas.

Logotipo de Pywikibot
Presentación del taller Bots en Wikipedia: Introducción a pywikipediabot
Pywikibot ejecutando varios scripts simultáneamente en Wikinoticias

En esta guía, aprenderás a instalar, configurar y utilizar Pywikibot, con un enfoque práctico que te permitirá aplicar inmediatamente lo aprendido en tus propios proyectos. A lo largo del artículo, se proporcionarán ejercicios y reflexiones para ayudarte a consolidar tus conocimientos y enfrentar desafíos comunes.

Sección teórica

editar

Pywikibot funciona como un conjunto de scripts que interactúan con la API de MediaWiki, la plataforma en la que se basan Wikipedia y otros proyectos Wikimedia. Utiliza peticiones HTTP para realizar acciones como leer y editar páginas, gestionar usuarios, y trabajar con categorías y plantillas.

El bot opera en un ciclo de solicitud-respuesta: envía una solicitud a la API y recibe una respuesta en formato JSON, que luego procesa para realizar las acciones programadas. Pywikibot es altamente modular, permitiendo a los usuarios personalizar scripts según sus necesidades específicas, lo que lo convierte en una herramienta versátil y adaptable.

Conceptos clave

editar
  • API de MediaWiki: Interfaz que permite a las aplicaciones interactuar con MediaWiki.
  • Scripts: Programas que automatizan tareas específicas.
  • JSON: Formato estándar para la transferencia de datos entre un cliente y un servidor.

Requisitos previos e instalación

editar

Requisitos previos

editar

Antes de comenzar con la instalación de Pywikibot, es importante tener conocimientos básicos en:

  • Python: Familiaridad con la sintaxis y conceptos fundamentales como variables, bucles y funciones.
  • Entornos de desarrollo: Habilidad para configurar y gestionar entornos de desarrollo en Python.

Además, necesitarás:

  • Acceso a una cuenta en un proyecto Wikimedia: como Wikipedia, Wikidata, etc.
  • Permisos adecuados para realizar ediciones automatizadas: consulta las políticas del proyecto específico en el que deseas trabajar.

Guía de instalación

editar

Paso 1: Configurar el entorno de Python

editar
  • Instalar Python: Asegúrate de tener Python instalado en tu sistema. Puedes descargarlo desde python.org.
  • Crear un entorno virtual (opcional pero recomendado):
python -m venv pywikibot-env
source pywikibot-env/bin/activate  # En Linux/MacOS
.\pywikibot-env\Scripts\activate  # En Windows

Paso 2: Descargar e instalar Pywikibot

editar
  • Descargar Pywikibot: Puedes obtener Pywikibot clonando el repositorio oficial desde GitHub:
git clone https://gerrit.wikimedia.org/r/pywikibot/core.git
  • Instalar dependencias:
cd core
pip install -r requirements.txt

Paso 3: Configurar Pywikibot

editar
  • Iniciar el script de configuración:
python pwb.py generate_user_files

Sigue las instrucciones para configurar tu bot. Necesitarás ingresar tu nombre de usuario y seleccionar el proyecto en el que trabajarás.

  • Autenticar el bot: Pywikibot te guiará a través del proceso de autenticación para obtener un token de acceso a tu cuenta de Wikimedia.

El proceso de instalación puede variar ligeramente según el sistema operativo. Asegúrate de consultar la documentación oficial para instrucciones detalladas específicas a tu sistema.

Ejercicio práctico 1

editar

Objetivo

editar

Instalar Pywikibot y configurar un bot básico

Instrucciones

editar
  1. Instala Pywikibot siguiendo las instrucciones de la sección anterior.
  2. Configura tu bot utilizando el script generate_user_files.
  3. Crea un script simple que edite una página de prueba en tu cuenta de Wikimedia. El siguiente ejemplo muestra cómo reemplazar un texto en una página:
from pywikibot import Site, Page

site = Site('en', 'wikipedia')  # Cambia 'wikipedia' por el proyecto en el que trabajes
page = Page(site, 'User:TuUsuario/Página_de_Prueba')
page.text = page.text.replace('texto_antiguo', 'texto_nuevo')
page.save('Reemplazando texto antiguo por texto nuevo')

Reflexión

editar
  • ¿Qué desafíos enfrentaste al configurar tu bot?
  • ¿Cómo podrías mejorar el proceso de edición automatizada?

Conceptos básicos de uso

editar

Pywikibot permite realizar diversas tareas a través de sus scripts, que pueden ser personalizados para ajustarse a tus necesidades. A continuación, se describen algunos conceptos básicos para empezar a utilizar Pywikibot.

Configuración de tareas básicas

editar
  • Editar páginas: Puedes utilizar el script edit.py para modificar el contenido de una página.
  • Mover páginas: Con movepages.py, puedes cambiar el nombre de una página.
  • Categorizar páginas: El script category.py te permite añadir o remover categorías de múltiples páginas.

Ejemplo de script básico

editar

El siguiente script busca y reemplaza texto en una serie de páginas dentro de una categoría:

from pywikibot import Site, Page
from pywikibot.pagegenerators import CategorizedPageGenerator

site = Site('en', 'wikipedia')
category = 'Category:Pages_with_old_text'
generator = CategorizedPageGenerator(category)

for page in generator:
    text = page.text
    new_text = text.replace('old_text', 'new_text')
    page.text = new_text
    page.save('Reemplazando "old_text" por "new_text"')

Ejercicio práctico 2

editar

Objetivo

editar

Escribir un script que automatice una tarea específica.

Instrucciones

editar
  1. Escribe un script que actualice todas las plantillas de un tipo específico en una categoría.
  2. Prueba tu script en una cuenta de prueba para evitar errores en un entorno de producción.
  3. Reflexiona sobre el proceso y considera cómo podrías optimizarlo para hacerlo más eficiente.

Preguntas para reflexión

editar
  • ¿Qué problemas encontraste al ejecutar tu script?
  • ¿Cómo podrías mejorar el código para hacerlo más robusto?

Opciones avanzadas y parámetros

editar

Una vez que domines los conceptos básicos, puedes comenzar a explorar las opciones avanzadas de Pywikibot. Algunas de estas incluyen:

Parámetros avanzados

editar
  • Filtrar páginas: Utiliza generadores de páginas con filtros específicos.
  • Manejo de errores: Implementa manejo de excepciones para controlar errores durante la ejecución del bot.
  • Trabajo con Wikidata: Pywikibot tiene soporte para Wikidata, permitiéndote editar y consultar elementos y propiedades.

Ejemplo de personalización

editar

El siguiente script utiliza parámetros avanzados para manejar excepciones y trabajar con Wikidata:

from pywikibot import Site, ItemPage

site = Site('wikidata', 'wikidata')
item = ItemPage(site, 'Q42')  # Elemento Wikidata para Douglas Adams

try:
    item.get()
    item.labels['en'] = 'Douglas Noël Adams'
    item.save('Actualizando el nombre en inglés')
except Exception as e:
    print(f'Ocurrió un error: {e}')

Discusión y reflexión

editar

Preguntas para discusión

editar
  • ¿Qué ventajas y desventajas tiene el uso de Pywikibot en comparación con la edición manual?
  • ¿Cómo puedes asegurarte de que tus bots no infrinjan las políticas de los proyectos Wikimedia?

Reflexión personal

editar

Reflexiona sobre los desafíos que enfrentaste y cómo superaste cada uno. Considera cómo podrías aplicar lo aprendido en otros proyectos o tareas.

Resolución de problemas comunes

editar

Errores comunes y soluciones

editar
  • Problemas de autenticación: Asegúrate de que tu token de acceso esté actualizado y que tus credenciales sean correctas.
  • Errores de red: Verifica tu conexión a Internet y la configuración de tu firewall o proxy.
  • Errores de código: Utiliza el manejo de excepciones para identificar y resolver errores específicos en tu script.

Recursos adicionales

editar

Scripts disponibles y lecciones asociadas

editar

A continuación, se presenta una lista de los scripts más comunes de Pywikibot, organizados por categorías según su función, junto con una breve descripción de cada uno y un enlace a la lección correspondiente.

Scripts globales

editar

Estos scripts se pueden ejecutar en varios wikis con un permiso de bot global.

Scripts principales

editar

Estos son los scripts más utilizados para tareas comunes de edición.

Programas auxiliares

editar

Scripts que ofrecen funciones adicionales de soporte.

Otros scripts

editar

Scripts adicionales con funciones diversas.

Scripts administrativos

editar

Scripts utilizados para tareas administrativas en los wikis.

Scripts para cambiar páginas generales

editar

Scripts que permiten realizar cambios en páginas de manera masiva o automatizada.

Categorías

editar

Scripts relacionados con la gestión de categorías en las wikis.

Imágenes

editar

Scripts especializados en la gestión y transferencia de imágenes.

Plantillas

editar

Scripts dedicados a la gestión y manipulación de plantillas.

Wikidata

editar

Scripts específicos para la gestión de datos en Wikidata.

Scripts no editores

editar

Estos scripts no realizan cambios en las páginas de la wiki, por lo que se permiten en prácticamente todos los wikis.

Scripts de mantenimiento

editar

Scripts auxiliares para el mantenimiento y la conversión de datos.

Conclusión

editar

A lo largo de este artículo, has aprendido los conceptos fundamentales y avanzados para utilizar Pywikibot de manera efectiva. Desde la instalación y configuración inicial hasta la creación de scripts personalizados, este conocimiento te permitirá automatizar tareas y contribuir de manera más eficiente a los proyectos Wikimedia.

Sugerencias para proyectos adicionales

editar
  • Crear un bot para gestionar categorías: Automatiza la clasificación de páginas en categorías específicas.
  • Desarrollar un bot para mantener plantillas actualizadas: Asegúrate de que las plantillas estén siempre al día con las últimas normativas.

Para continuar aprendiendo, explora los recursos adicionales proporcionados y experimenta con nuevos proyectos que te desafíen a aplicar y expandir lo que has aprendido.