PyWikiBot
Ce wiki a été archivé en 2018.
Le nouveau wiki se trouve à: ressources.labomedia.org Les fonctionnalités sont désactivées: vous pouvez faire une recherche sur Google site:https://wiki.labomedia.org et découvrir La Labomedia. |
- 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 !
Sommaire
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
- Wikipédia:Créer un bot La théorie.
- http://www.mediawiki.org/wiki/Manual:Pywikibot/fr Le sommaire de la documentation en français.
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
- http://www.mediawiki.org/wiki/Manual:Pywikibot/Use_on_third-party_wikis Documentation détaillée.
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
- http://www.mediawiki.org/wiki/Manual:Pywikibot/Third-party_Wiki_Quick_Start La page d'installation rapide.
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.