Archive:Robots pour lire ou écrire dans Mediawiki Version compat obsolète
- 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.
Sommaire
Version
J'aime ce qui est neuf et qui brille, je voudrais choisir python 3.4, python-irc supporte python 3.4.
Mais les scripts irc ne sont que dans la version compat avec 2.7.2 <= python < 3.0
Nous installons pywikibot-core avec python 2.7.6
Ressources
- Wikipédia:Créer un bot A lire en premier.
- http://www.mediawiki.org/wiki/Manual:Pywikibot en anglais
- http://www.mediawiki.org/wiki/Manual:Pywikibot/Installation/fr en français
Sources:
- https://github.com/wikimedia/pywikibot-core compat (formerly "trunk")
Installation sur Linux Mint 17 ou Ubuntu 14.04
Sources
Téléchargement
Dans votre dossier projet, ouvrir un terminal:
git clone --recursive https://gerrit.wikimedia.org/r/pywikibot/compat.git pywikibot-compat
Variable d'environnement
http://www.mediawiki.org/wiki/Manual:Pywikibot/Installation#Shortcut_in_command_line
To allow your source code to be developed outside of the pywikibot source directory, add something like:
PYTHONPATH=$PYTHONPATH:~/pywikipedia/ export PYTHONPATH
to a file that gets run on login, usually ~/.bashrc - this avoids typing the export PYTHONPATH part in each time you log in. Naturally, change paths to match your installation. Similarly, you can set the PYWIKIBOT_DIR environment variable to specify the directory in which user-specific information is stored (in particular, user-config.py which contains login data for the bot). TODO: cela permet de lancer les scripts depuis n'importe où, pas obligatoirement depuis le dossier source.
Dépendances
Les modules python sont dans compat/externals.
A la fin de l'installation, la commande suivante installera les dépendances nécessaires et manquantes:
python pwb.py clean_sandbox.py -simulate
Configuration
python generate_user_files.py
Par défault, La Labomedia n'est pas dans la liste, le monde ne sait pas ce qu'il perd !
$ python generate_user_files.py
1: Create user_config.py file (required)
2: Create user_fixes.py file (optional, for advanced usage)
3: The two files
What do you do? Just enter the number: 3
1: openttd
2: wikitravel_shared
3: strategy
4: mozilla
5: species
.
.
.
39: anarchopedia
40: mediawiki
Select family of sites we are working on, just enter the number not name (default: wikipedia): test
This is the list of known language(s):
test
The language code of the site we're working on (default: 'en'): en
Username (en test): platon
Which variant of user_config.py:
[S]mall or [E]xtended (with further information)? e
'user-config.py' written.
'user-fixes.py' written.
Partie tierce: Configuration pour un wiki autre que wikipedia
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.
Configuration pour un wiki tiers
Création du fichier family
python generate_family_file.py
$ python generate_family_file.py
Usage: generate_family_file.py <url> <short name>
Example: generate_family_file.py http://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 <-------- entièrement en minuscule
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
Retrieving namespaces... fr
Writing families/wikiLabo_family.py...
Pour recommencer la commande, il faut détruire le fichier /families/wikiLabo_family.py
Exemple
# -*- coding: utf-8 -*-
"""
This family file was auto-generated by $Id: 190a8668f9d8e282542eeb0321ab4af140ce15b9 $
Configuration parameters:
url = http://wiki.labomedia.org
name = wikilabo
Please do not commit this to the Git repository!
"""
import family
class Family(family.Family):
def __init__(self):
family.Family.__init__(self)
self.name = 'wikilabo'
self.langs = {
'fr': 'wiki.labomedia.org',
}
self.namespaces[1] = self.namespaces.get(1, {})
self.namespaces[1][u'fr'] = [u'Discuter']
self.namespaces[2] = self.namespaces.get(2, {})
self.namespaces[2][u'fr'] = [u'Utilisatrice']
...
...
self.namespaces[109][u'fr'] = [u'Discussion concept', u'Concept talk']
def scriptpath(self, code):
return {
'fr': '',
}[code]
def version(self, code):
return {
'fr': u'1.23.6',
}[code]
Droits
$ python pwb.py login.py
WARNING: Skipped '/media/data500/major_files/3_D/3D_current/aprojets/pywikibot-compat/user-config.py': writeable by others.
user-config.py
Dans les préférences du fichier, mettre aucun accès pour le groupe et les autres.
Test de l'impatient
$ python pwb.py clean_sandbox.py -simulate
=== Pywikipediabot framework v1.0 -- Logging header ===
COMMAND: ['pwb.py', 'clean_sandbox.py', '-simulate']
VERSION: ('[https] r-pywikibot-compat.git (84d84a9, g11110, 2014/12/02, 10:40:29, ok)', '84d84a9541eb52345b130fb03177d876ef88ee30', (1, 23, '.6'))
SYSTEM: ('Linux', 'PC4', '3.13.0-24-generic', '#47-Ubuntu SMP Fri May 2 23:31:42 UTC 2014', 'i686')
MODULES:
family.py 326fbd4 2014-12-16 08:05:16.507983
pywikibot/version.py 3eba2a0 2014-12-16 08:05:16.547983
xmlreader.py 1df969f 2014-12-16 08:05:16.611984
pywikibot/exceptions.py 9f2eb10 2014-12-16 08:05:16.543983
wikipedia.py 3f3496a 2014-12-16 08:05:16.603983
pywikibot/textlib.py 41c61ab 2014-12-16 08:05:16.543983
userlib.py 45704bd 2014-12-16 08:05:16.583983
login.py 83d2c0f 2014-12-16 08:05:16.527983
pywikibot/throttle.py 08b1383 2014-12-16 08:05:16.547983
pywikibot/comms/http.py df2911a 2014-12-16 08:05:16.543983
wikipediatools.py addb2e9 2014-12-16 08:05:16.603983
query.py f332f49 2014-12-16 08:05:16.547983
config.py 19f8369 2014-12-16 08:05:16.455984
pywikibot/i18n.py e62d04d 2014-12-16 08:05:16.543983
pywikibot/support.py 072bb25 2014-12-16 08:05:16.543983
MESSAGES: none
=== === === === === === === === === === === === === ===
{'online_ver': '84d84a9', 'release_rev': 'g11110', 'release_ver': '84d84a9'}
=== === === === === === === === === === === === === ===
Preparing to process sandbox page [[Centre de Ressources Numériques - Labomedia:Bac à sable]]
SIMULATION: get_throttle skipped.
*** The sandbox is not existent, skipping.
Done.
DONE
Simulate ne fait rien sur le wiki !
Login
Dans un terminal ouvert dans le dossier "pywikibot":
python pwb.py login.py
Vous devrez saisir le mot de passe du robot créè précédemment. En cas de succès, vous aurez un message "Success".
Vous ne devrez le faire qu'une seule fois, les robots restent normalement connectés.
Ne marche pas !
L'utilisateur robot est en minuscule, comme le nom wikilabo. Pas de message d'erreur en console, l'option -v ne donne que des infos totalement inutile.
Simulate
...../pywikibot-compat $ python pwb.py login.py -simulate
=== Pywikipediabot framework v1.0 -- Logging header ===
COMMAND: ['pwb.py', 'login.py', '-simulate']
VERSION: ('[https] r-pywikibot-compat.git (9b9558c, g2, 2015/01/03, 11:02:30, OUTDATED)', 'a95e508551da2dae68160f0ba42a8e0ae1e4753a', (1, 23, '.6'))
SYSTEM: ('Linux', 'PC40', '3.13.0-24-generic', '#47-Ubuntu SMP Fri May 2 23:31:42 UTC 2014', 'i686')
MODULES:
family.py 2174976 2015-01-06 02:01:21
pywikibot/version.py 3eba2a0 2015-01-06 02:01:22
xmlreader.py 1df969f 2015-01-06 02:01:22
pywikibot/exceptions.py 9f2eb10 2015-01-06 02:01:22
wikipedia.py 3f3496a 2015-01-06 02:01:22
pywikibot/textlib.py 41c61ab 2015-01-06 02:01:22
userlib.py 45704bd 2015-01-06 02:01:22
login.py 83d2c0f 2015-01-08 10:53:01.999547
pywikibot/throttle.py 08b1383 2015-01-06 02:01:22
pywikibot/comms/http.py df2911a 2015-01-06 02:01:22
wikipediatools.py addb2e9 2015-01-06 02:01:22
query.py f332f49 2015-01-06 02:01:22
config.py 19f8369 2015-01-06 02:01:21
pywikibot/i18n.py e62d04d 2015-01-06 02:01:22
pywikibot/support.py 072bb25 2015-01-06 02:01:22
MESSAGES: none
=== === === === === === === === === === === === === ===
{'online_ver': 'a95e508', 'release_rev': 'g2', 'release_ver': '9b9558c'}
=== === === === === === === === === === === === === ===
Password for user robotserge on wikilabo:fr
No characters will be shown:
Logging in to wikilabo:fr as robotserge via API.
Login failed. Wrong password or CAPTCHA answer?
API login failed, retrying using standard webpage.
Logging in to wikilabo:fr as robotserge
Login failed. Wrong password or CAPTCHA answer?
DONE
Ce serait un problème de captcha !!
Envoyer les modifications récentes sur l'IRC
sudo apt-get install python-irclib
http://www.mediawiki.org/wiki/Manual:Pywikibot/Scripts#IRC_scripts
python maintcont.py