API de MediaWiki/Allusers : Différence entre versions
imported>Jacques Ducloy (→Extraction des inscrits en lex) |
imported>Jacques Ducloy (→Exemple d'utilisation dans le réseau Wicri) |
||
Ligne 92 : | Ligne 92 : | ||
lex filtreUsers.lex | lex filtreUsers.lex | ||
gcc lex.yy.c -ll -o filtreUsers | gcc lex.yy.c -ll -o filtreUsers | ||
+ | </source> | ||
+ | ===Mise en œuvre=== | ||
+ | |||
+ | En pratique la majorité des wikis du réseau sont publics et la commande curl s'applique sans problème. | ||
+ | <source lang="sh"> | ||
+ | { | ||
+ | curl "http://maquettewicri.loria.fr/fr.wicri/api.php5?action=query&list=allusers&aulimit=500" | ||
+ | curl "http://maquettewicri.loria.fr/fr.ticri/api.php5?action=query&list=allusers&aulimit=500" | ||
+ | } | ./filtreUsers | sort -u | wc | ||
</source> | </source> |
Version du 2 décembre 2010 à 18:32
Le module allusers de l'API de MediaWiki permet d'obtenir une liste des contributeurs, triée par ordre alphabétique.
Sommaire
Exemple introductif
Ce module peut être utilisé à partir d'un navigateur en utilisant une url du type :
<url du wiki>/api.php?paramètres
.
Exemple, pour ce wiki, dont l'url est : http://maquettewicri.loria.fr/ticri-outils/, l'accès normal est :
L'accès au module allusers utilise l'URL :
Paramètres
Les paramètres ont la forme identificateur = valeur
, ils sont séparés par des caractères « & ».
- Sélection de l'action liste des utilisateurs inscrits.
- ?action=query&list=allusers
aulimit
: longueur maximale de la liste des résultats (valeur implicite 10).
Pour les autres options, voir :
Résultats
En principe la commande renvoie une liste structurée en xml.
<?xml version="1.0" encoding="utf-8"?>
<api>
<query-continue>
<allusers aufrom="Wicri robot" />
</query-continue>
<query>
<allusers>
<u name="Alice Hermann" />
...
<u name="Thierry Daunois" />
</allusers>
</query>
</api>
En pratique, suivant le mode opératoire choisi, on peut obtenir une version encapsulée dans une page html.
Par exemple, sous unix, la commande curl :
curl "http://maquettewicri.loria.fr/ticri-outils/api.php5?action=query&list=allusers"
donne plutôt quelque chose comme :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MediaWiki API Result</title>
...
<span style="color:blue;"><u name="Alice Hermann" /></span>
Exemple d'utilisation dans le réseau Wicri
Le réseau Wicri est constitué de dizaines de wikis sur lesquels différents groupes d'utilisateurs sont inscrits. Pour évaluer leur nombre il faut consolider les listes obtenues sur plusieurs wikis. Voici un exemple réalisé depuis une station Unix.
Extraction des inscrits en lex
Un petit programme lex, nommé filtreUser, fonctionne avec un état (ou start condition) nommé USER.
%START USER
%%
"<u name="" BEGIN USER; /* 1 */
<USER>"" /></span>" {putchar ('\n'); /* 2 */
BEGIN 0;}
<USER>. ECHO; /* 3 */
. ; /* 4 */
\n ; /* 5 */
%%
main()
{
yylex();
}
- la règle 1 filtre le balisage précédent un auteur de la liste. L'action consiste à changer d'état pour imprimer le nom de l'utilisateur.
- la règle 2 filtre la fin d'une zone auteur. On revient à l'état 0 en imprimant un saut de ligne.
- la règle 3 provoque l'écriture d'un caractère de l'auteur.
- les règles 4 et 5 inhibent la copie des caractères non reconnus.
Sa compilation se réaliste comme suit :
lex filtreUsers.lex
gcc lex.yy.c -ll -o filtreUsers
Mise en œuvre
En pratique la majorité des wikis du réseau sont publics et la commande curl s'applique sans problème.
{
curl "http://maquettewicri.loria.fr/fr.wicri/api.php5?action=query&list=allusers&aulimit=500"
curl "http://maquettewicri.loria.fr/fr.ticri/api.php5?action=query&list=allusers&aulimit=500"
} | ./filtreUsers | sort -u | wc