Wicri:Dilib source, module Wicri, commande WicriStatistiquesSite : Différence entre versions
De Wicri Outils
imported>Jacques Ducloy (→Test) |
imported>Asma Lahssini (→Code source) |
||
Ligne 6 : | Ligne 6 : | ||
int main() | int main() | ||
{ | { | ||
+ | // Déclaration des variables | ||
SxmlNode *apiNode ; | SxmlNode *apiNode ; | ||
SxmlNode *queryNode; | SxmlNode *queryNode; | ||
Ligne 24 : | Ligne 25 : | ||
int cumulEdits; | int cumulEdits; | ||
int cumulImages; | int cumulImages; | ||
− | + | // Création d'un tableau de 5 colonnes | |
printf ("{| class=\"wikitable sortable\" \n"); | printf ("{| class=\"wikitable sortable\" \n"); | ||
printf ("|- \n"); | printf ("|- \n"); | ||
Ligne 33 : | Ligne 34 : | ||
printf ("!Fichiers (images...)\n"); | printf ("!Fichiers (images...)\n"); | ||
printf ("|- \n"); | printf ("|- \n"); | ||
− | + | //Initiation des varibales | |
cumulPages=0; | cumulPages=0; | ||
cumulArticles=0; | cumulArticles=0; | ||
cumulEdits=0; | cumulEdits=0; | ||
cumulImages=0; | cumulImages=0; | ||
− | + | // une boucle qui prendre tout les document XML | |
while ((apiNode=SxmlInputGetDocumentElement())) | while ((apiNode=SxmlInputGetDocumentElement())) | ||
{ | { | ||
queryNode=SxmlGetFirstChildByTagName(apiNode, "query"); | queryNode=SxmlGetFirstChildByTagName(apiNode, "query"); | ||
if (!queryNode)continue; | if (!queryNode)continue; | ||
+ | //Si "query" est un premier fils de l'api on continue le programme sinon on s'arrête | ||
statNode= SxmlGetFirstChildByTagName(queryNode, "statistics"); | statNode= SxmlGetFirstChildByTagName(queryNode, "statistics"); | ||
if (!statNode)continue; | if (!statNode)continue; | ||
− | + | //Si "statistics" est un premier fils de "query" on continue le programme sinon on s'arrête | |
+ | // La récupération des variables | ||
pagesStr=SxmlGetAttribute(statNode,"pages"); | pagesStr=SxmlGetAttribute(statNode,"pages"); | ||
articlesStr=SxmlGetAttribute(statNode,"articles"); | articlesStr=SxmlGetAttribute(statNode,"articles"); | ||
Ligne 61 : | Ligne 64 : | ||
− | + | // convertir le type String en Entier | |
pagesNum= atoi(pagesStr); | pagesNum= atoi(pagesStr); | ||
articlesNum= atoi(articlesStr); | articlesNum= atoi(articlesStr); | ||
editsNum= atoi(editsStr); | editsNum= atoi(editsStr); | ||
imagesNum= atoi(imagesStr); | imagesNum= atoi(imagesStr); | ||
− | + | // Calculer les cumules | |
cumulPages+=pagesNum; | cumulPages+=pagesNum; | ||
cumulArticles+=articlesNum; | cumulArticles+=articlesNum; |
Version du 23 juillet 2020 à 16:33
Code source
/* -*- coding: utf-8 -*- */
#include "SxmlNode.h"
int main()
{
// Déclaration des variables
SxmlNode *apiNode ;
SxmlNode *queryNode;
SxmlNode *statNode;
char *pagesStr;
char *articlesStr;
char *editsStr;
char *imagesStr;
int pagesNum;
int articlesNum;
int editsNum;
int imagesNum;
int cumulPages;
int cumulArticles;
int cumulEdits;
int cumulImages;
// Création d'un tableau de 5 colonnes
printf ("{| class=\"wikitable sortable\" \n");
printf ("|- \n");
printf ("!Wiki\n");
printf ("!Pages\n");
printf ("!Articles significatifs\n");
printf ("!Modifications\n");
printf ("!Fichiers (images...)\n");
printf ("|- \n");
//Initiation des varibales
cumulPages=0;
cumulArticles=0;
cumulEdits=0;
cumulImages=0;
// une boucle qui prendre tout les document XML
while ((apiNode=SxmlInputGetDocumentElement()))
{
queryNode=SxmlGetFirstChildByTagName(apiNode, "query");
if (!queryNode)continue;
//Si "query" est un premier fils de l'api on continue le programme sinon on s'arrête
statNode= SxmlGetFirstChildByTagName(queryNode, "statistics");
if (!statNode)continue;
//Si "statistics" est un premier fils de "query" on continue le programme sinon on s'arrête
// La récupération des variables
pagesStr=SxmlGetAttribute(statNode,"pages");
articlesStr=SxmlGetAttribute(statNode,"articles");
editsStr=SxmlGetAttribute(statNode,"edits");
imagesStr=SxmlGetAttribute(statNode,"images");
printf ("|%s\n", SxmlInputRecordKey);
printf ("|{{formatnum:%s}}\n", pagesStr);
printf ("|{{formatnum:%s}}\n", articlesStr);
printf ("|{{formatnum:%s}}\n", editsStr);
printf ("|{{formatnum:%s}}\n", imagesStr);
printf ("|- \n");
// convertir le type String en Entier
pagesNum= atoi(pagesStr);
articlesNum= atoi(articlesStr);
editsNum= atoi(editsStr);
imagesNum= atoi(imagesStr);
// Calculer les cumules
cumulPages+=pagesNum;
cumulArticles+=articlesNum;
cumulEdits+=editsNum;
cumulImages+=imagesNum;
};
printf ("|}\n");
printf(";Statistiques cumulées:\n");
printf ("{| class=\"wikitable\" \n");
printf ("|- \n");
printf ("!Pages\n");
printf ("!Articles\n");
printf ("!Modifications\n");
printf ("!Fichiers\n");
printf ("|- \n");
printf ("|{{formatnum:%d}}\n", cumulPages);
printf ("|{{formatnum:%d}}\n", cumulArticles);
printf ("|{{formatnum:%d}}\n", cumulEdits);
printf ("|{{formatnum:%d}}\n", cumulImages);
printf ("|- \n");
printf ("|}\n");
}
Mise en œuvre
Importation
WicriGetPage -l wicri-outils.fr -p "Wicri:Dilib source, module Wicri, commande WicriStatistiquesSite" \
| MediaWikiExtractSources -w | HfdStoreFile
Compilation
gcc testDilib/WicriStatistiquesSite.c $DILIB_CC -l curl -o testDilib/WicriStatistiquesSite
Test
- Pour visualiser la liste d'entrée
cat testDilib/wiki.dict \
| ./testDilib/WicriExpandApiFromList -a "meta=siteinfo&siprop=statistics" \
| SxmlIndent
- Pour tester
cat testDilib/wiki.dict \
| ./testDilib/WicriExpandApiFromList -a "meta=siteinfo&siprop=statistics" \
| ./testDilib/WicriStatistiquesSite
Voir le résultat en page Discussion
- Avec la version sous Dilib
( cat testDilib/wiki.dict \
| WicriExpandApiFromList -a "meta=siteinfo&siprop=statistics"
cat testDilib/statsPriv.list
) | WicriStatistiquesSite