PyWikiBot

De Centre de Ressources Numériques - Labomedia
Révision de 16 janvier 2015 à 11:48 par Serge (discussion | contributions) (Envoyer les modifications récentes sur l'IRC)

(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher
  • Les bots sont des outils automatisés utilisés pour exécuter un travail fastidieux ou certaines tâches répétitives liées à un wiki. Par exemple, un IRC RC Bot peut poster les modifications récentes de votre wiki sur un channel IRC.
  • Pywikibot, en abrégé PWB (Python Wikipediabot Framework, Pywikipediabot ou Pywikipedia) est une collection d'outils qui permet d'automatiser des tâches sur les sites Mediawiki. Construit au départ pour Wikipedia, il est utilisé par beaucoup d'autres site propulsé par MediaWiki. Il est écrit en Python, qui est un langage de programmation Open Source.

Attention, les pages de documentation sont nombreuses et mélangent allégrement la documentation pour core et compat !


Version

Le premier essai avec la version compat n'a pas permis de se connecter. Cette version est obsolète, mais avait l'avantage de contenir les scripts IRC.

Nous installons pywikibot-core avec python 2.7.6 sur Linux Mint 17, soit Ubuntu 14.04. Les scripts IRC sont notés "bug, il faudrait les ranger dans un package séparé !


Ressources

Sources sur github:

Installation sur Linux Mint 17 ou Ubuntu 14.04

Sources

Téléchargement de la version core (anciennement "rewrite")

Dans votre dossier projet, ouvrir un terminal:

git clone --recursive https://gerrit.wikimedia.org/r/pywikibot/core.git pywikibot-core

Cela va créer le dossier pywikibot-core avec les sources.

Variable d'environnement

http://www.mediawiki.org/wiki/Manual:Pywikibot/Installation/fr#Raccourci_en_ligne_de_commande

A adapter:

PYTHONPATH=$PYTHONPATH:/your/path/to/projet/pywikibot-clone/
export PYTHONPATH

Cela permet de lancer les scripts depuis n'importe où, pas obligatoirement depuis le dossier source.

Configuration

Création de user-config.py et wikilabo-family.py

python generate_user_files.py

ne marche qu'avec les wiki wikipedia.

user-config.py

Il faut créer ce fichier et l’enregistrer dans pywikibot-core:

# -*- coding: utf-8  -*-
# This is a sample file. You should use generate_user_files.py
# to create your user-config.py file.

#mylang = 'en'
#family = 'wikipedia'
#usernames['wikipedia']['en'] = 'Test'

mylang = 'fr'
family = 'wikilabo'
usernames['wikilabo']['fr'] = u'robot'
console_encoding = 'utf-8'

Ce fichier doit avoir des droits 600:

chmod 600 user-config.py

Family file

python generate_family_file.py
Usage: generate_family_file.py <url> <short name>
Example: generate_family_file.py https://www.mywiki.bogus/wiki/Main_Page mywiki
This will create the file families/mywiki_family.py
Please insert URL to wiki: http://wiki.labomedia.org
Please insert a short name (eg: freeciv): wikilabo
Generating family file from http://wiki.labomedia.org

==================================
api url: http://wiki.labomedia.org/api.php
MediaWiki version: 1.23.6
==================================

Determining other languages...
Loading wikis... 
  * fr... in cache
Writing pywikibot/families/wikilabo_family.py...

Il faut détruire le fichier pywikibot/families/wikilabo_family.py avant de relancer la commande.

Création d'un utilisateur robot

Parce qu'un robot peut exécuter des centaines voire des milliers de modifications par heure ou minute, et donc inonder les modifications récentes, les droits d'utilisateurs devraient être configurés pour permettre aux robots d'obtenir un droit d'utilisateur spécial qui préviendrait l'apparition de leurs modifications dans le flux par défaut des modifications récentes. Comme cela pourrait entrainer des milliers de modifications incorrectes ou venant de robots malveillants qui seraient inaperçus pour longtemps, ce droit devrait être uniquement attribué aux robots exploités par des utilisateurs fiables.

Bureaucrate

Seul les bureaucrates peuvent changer les droits d'un utilisateur. Créer un utilisateur robot avec un mot de passe dur. Puis un bureaucrate doit lui donner des droits robot.

Connection

python pwb.py login
Password for user Robotserge on wikilabo:fr (no characters will be shown): 
Logging in to wikilabo:fr as Robot
Logged in on wikilabo:fr as Robot.

Test et dépendances

clean_sandbox.py n'est pas configuré pour la langue fr !! Ajouter dans content = {

'fr': u'{{subst:Page vide}}',

Modifier sandboxTitle = {

'fr': u'Bac_à_sable',
python pwb.py clean_sandbox.py -simulate

Simulate ne fait rien sur le wiki .

Vérification

python pwb.py add_text.py -cat:catname -text:"This is a Test." -except:"\{\{([Tt]emplate:|)[Dd]ocumentation [Ss]ubpage" -up

Respecter la casse pour catname !

Le robot écrit sur le wiki: les modifications apparaissent dans Modifications Récentes, avec l'option Afficher les robots. Il faut aussi laisser Afficher les utilisateurs enregistrés, car le robot est enregistré.

Le robot ne reste pas connecté, ce qui provoque un cafouillage entre mdp et réponses aux questions !

Le robot ne reste pas connecté

Ajouter à votre fichier user-config.py

 password_file = "secretsfile"

Créer un fichier secretsfile :

("username", "password")

chmod 600 secretsfile

Envoyer les modifications récentes sur un canal IRC

PyWikiBot, compat ou core, n'a pas de script qui publie sur IRC.

irc_recent_changes: Un script python 3 qui lit la page Modifications Récentes toutes les 120 secondes, et publie sur un canal IRC les pages modifiées.