Pywikibot
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]- Instala Pywikibot siguiendo las instrucciones de la sección anterior.
- Configura tu bot utilizando el script
generate_user_files
. - 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]- Escribe un script que actualice todas las plantillas de un tipo específico en una categoría.
- Prueba tu script en una cuenta de prueba para evitar errores en un entorno de producción.
- 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]- Foros y comunidades: Únete a la comunidad de Pywikibot en IRC o en Phabricator.
- Documentación Oficial: Consulta la documentación de Pywikibot para obtener más detalles.
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.
- interwiki.py: Gestiona enlaces interwiki entre diferentes versiones lingüísticas de Wikipedia. Ir a la lección de interwiki.py
- redirect.py: Administra redirecciones de páginas, permitiendo crearlas, modificarlas o eliminarlas. Ir a la lección de redirect.py
Scripts principales
[editar]Estos son los scripts más utilizados para tareas comunes de edición.
- add_text.py: Añade texto al inicio o al final de una o varias páginas. Ir a la lección de add_text.py
- category.py: Gestiona categorías, permitiendo añadir, eliminar o cambiar categorías en las páginas. Ir a la lección de category.py
- replace.py: Reemplaza texto en las páginas, utilizando cadenas simples o expresiones regulares. Ir a la lección de replace.py
- solve_disambiguation.py: Ayuda a resolver ambigüedades en enlaces, redirigiéndolos a las páginas correctas. Ir a la lección de solve_disambiguation.py
- upload.py: Sube archivos a Wikimedia Commons u otros proyectos de Wikimedia. Ir a la lección de upload.py
- weblinkchecker.py: Verifica enlaces externos en las páginas y reporta aquellos que están rotos. Ir a la lección de weblinkchecker.py
Programas auxiliares
[editar]Scripts que ofrecen funciones adicionales de soporte.
- clean_sandbox.py: Limpia y restablece las páginas de prueba (sandbox) a su estado original. Ir a la lección de clean_sandbox.py
- cosmetic_changes.py: Realiza cambios menores y estéticos en las páginas, como la corrección de espacios o las mayúsculas y minúsculas. Ir a la lección de cosmetic_changes.py
- transferbot.py: Transfiere contenido entre diferentes wikis de Wikimedia. Ir a la lección de transferbot.py
Otros scripts
[editar]Scripts adicionales con funciones diversas.
- welcome.py: Da la bienvenida automáticamente a los nuevos usuarios en un wiki. Ir a la lección de welcome.py
Scripts administrativos
[editar]Scripts utilizados para tareas administrativas en los wikis.
- blockpageschecker.py: Verifica y maneja las páginas bloqueadas en un wiki. Ir a la lección de blockpageschecker.py
- delete.py: Automatiza la eliminación de páginas según criterios específicos. Ir a la lección de delete.py
- patrol.py: Patrulla cambios recientes, marcando ediciones como revisadas o patrulladas. Ir a la lección de patrol.py
- protect.py: Cambia los niveles de protección de las páginas, permitiendo restringir ediciones. Ir a la lección de protect.py
Scripts para cambiar páginas generales
[editar]Scripts que permiten realizar cambios en páginas de manera masiva o automatizada.
- archivebot.py: Archiva automáticamente discusiones o páginas según criterios de antigüedad. Ir a la lección de archivebot.py
- movepages.py: Mueve o renombra páginas en masa según criterios específicos. Ir a la lección de movepages.py
- pagefromfile.py: Crea o actualiza páginas a partir de un archivo de texto con un formato específico. Ir a la lección de pagefromfile.py
Categorías
[editar]Scripts relacionados con la gestión de categorías en las wikis.
- category_redirect.py: Gestiona redirecciones de categorías, creando o actualizando redirecciones de categoría. Ir a la lección de category_redirect.py
- commonscat.py: Vincula artículos de Wikipedia con categorías de Wikimedia Commons. Ir a la lección de commonscat.py
Imágenes
[editar]Scripts especializados en la gestión y transferencia de imágenes.
- imagetransfer.py: Transfiere imágenes de un proyecto Wikimedia a otro, como de Wikipedia a Commons. Ir a la lección de imagetransfer.py
- image.py: Realiza varias tareas relacionadas con imágenes, como la categorización o la corrección de descripciones. Ir a la lección de image.py
- unusedfiles.py: Identifica y lista archivos que no están en uso en el wiki. Ir a la lección de unusedfiles.py
Plantillas
[editar]Scripts dedicados a la gestión y manipulación de plantillas.
- template.py : Administra plantillas, permitiendo agregar o modificar plantillas en múltiples páginas. Ir a la lección de template.py
- templatecount.py: Cuenta la cantidad de veces que se utiliza una plantilla en un wiki. Ir a la lección de templatecount.py
Wikidata
[editar]Scripts específicos para la gestión de datos en Wikidata.
- claimit.py: Añade o modifica declaraciones en Wikidata. Ir a la lección de claimit.py
- coordinate_import.py: Importa coordenadas geográficas en elementos de Wikidata. Ir a la lección de coordinate_import.py
- harvest_template.py: Extrae información de plantillas en Wikipedia y la guarda en Wikidata. Ir a la lección de harvest_template.py
- illustrate_wikidata.py: Añade imágenes a elementos de Wikidata utilizando imágenes disponibles en Commons. Ir a la lección de illustrate_wikidata.py
- interwikidata.py: Gestiona enlaces interlingüísticos entre elementos de Wikidata. Ir a la lección de interwikidata.py
- newitem.py: Crea nuevos elementos en Wikidata a partir de información existente. Ir a la lección de newitem.py
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.
- listpages.py: Lista páginas según criterios específicos, sin hacer modificaciones. Ir a la lección de listpages.py
- login.py: Gestiona el inicio de sesión de los bots en los wikis. Ir a la lección de login.py
- touch.py: Actualiza la fecha de modificación de las páginas sin hacer cambios en el contenido. Ir a la lección de touch.py
Scripts de mantenimiento
[editar]Scripts auxiliares para el mantenimiento y la conversión de datos.
- cache.py: Gestiona la caché utilizada por Pywikibot para mejorar el rendimiento. Ir a la lección de cache.py
- colors.py: Configura y gestiona los colores utilizados en la salida de la consola de Pywikibot. Ir a la lección de colors.py
- update_script.py: Actualiza scripts y otros componentes de Pywikibot a la última versión. Ir a la lección de update_script.py
- download_dump.py: Descarga y maneja archivos de volcado (dump) de la base de datos de Wikimedia. Ir a la lección de download_dump.py
- make_i18n_dict.py: Crea diccionarios de localización (i18n) para la internacionalización de Pywikibot. Ir a la lección de make_i18n_dict.py
- wikimedia_sites.py: Gestiona la lista de sitios de Wikimedia utilizada por Pywikibot. Ir a la lección de wikimedia_sites.py
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.