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

Voir aussi

Voir : Dilib, module Wicri, commande WicriStatistiquesSite