Ir al contenido

Pywikibot

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

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.

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.

Nota

[editar]

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.