Archive:Robots pour lire ou écrire dans Mediawiki Version compat obsolète

De Centre de Ressources Numériques - Labomedia

(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.


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

Sources:


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