Re: Script de stats ?

Liste des GroupesRevenir à fcu serveurs 
Sujet : Re: Script de stats ?
De : iulius (at) *nospam* nom-de-mon-site.com.invalid (Julien ÉLIE)
Groupes : fr.comp.usenet.serveurs
Date : 23. Feb 2026, 21:25:12
Autres entêtes
Organisation : Groupes francophones par TrigoFACILE
Message-ID : <10nid38$22q1k$1@news.trigofacile.com>
References : 1 2
User-Agent : Mozilla Thunderbird
Salut Olivier,

Est-ce que ça tente quelqu'un d'en remettre un en service ?
 C'est une bonne question. Pour ma part, même si techniquement je
pourrais développer et lancer un tel robot, je n'en ai pas du tout
l'envie.
Pareil, et en plus je n'utilise plus tradspool pour fr.* donc c'est techniquement plus compliqué pour récupérer les messages (mais ça se fait).

Ou sinon, si personne n'est motivé (je ne le suis pas non plus) ou que
ce genre de stats n'est plus jugé pertinent, alors on peut se demander
si le groupe fr.usenet.stats est toujours utile...
 C'est aussi une bonne question. Je suis d'accord avec toi que si
personne n'est motivé alors autant supprimer le groupe.
À toute fin utile, le script que j'utilisais naguère, si quelqu'un est intéressé. C'est une bonne base de départ en tout cas.
./spoolstats -f groupes
où le fichier groupes contient les noms des groupes à traiter (un par ligne).
$spool="/home/news/spool/articles" pointe vers la racine du répertoire où sont stockés les messages au format tradspool.
Tout l'historique des articles présents sur le serveur va être traité. S'il faut restreindre à 1 mois par exemple, il faudrait adapter le script pour passer un fichier trop vieux.
#!/usr/bin/perl
# Modifié par Christophe Massiot le 3/07/98
# Légèrement adapté par Julien Élie le 31/05/06
use Getopt::Std;
use Encode qw/encode decode/;
# Seule variable à modifier
$spool="/home/news/spool/articles";
$version="0.00003";
%articles=();
$totalart=0;
sub usage {
   printf STDERR
    "
spoolstats $version (c) A.Thivillon Alain.Thivillon\@alma.fr
Usage : spoolstats -f groupfile
-f groupfile : groupfile contient la liste des groupes à traiter\n\n";
  exit 0;
}
sub read_grp {
   my($filename)=@_;
   open(GROUPS,$filename) || return; #|| die ("Cannot open $filename");
   while (<GROUPS>) {
     chomp;
     my($group)=split;
     $groupname{$group}=$group;
     $articles{$group}=0;
     $crossposts{$group}=0;
     $follows{$group}=0;
     $followbad{$group}=0;
   };
   close(GROUPS);
};
sub process_group {
   my($group)=@_;
   $groupdir = $spool."/".$group;
   $groupdir =~ s/\./\//g;
   if (-e $groupdir) {
     opendir(GROUPDIR,$groupdir) || die ("Bad directory $groupdir\n");
     chdir($groupdir);
     while ($entry=readdir(GROUPDIR)) {
     next if( -d $groupdir."/".$entry);
     open (ART,$groupdir."/".$entry) || die ("Impossible d'ouvrir $entry
         dans le groupe $group\n");
     @newsgroups= ();
     @followup= ();
     $localfromdone=0;
     while (<ART>) {
       s/\r?\n$//;
       last if (/^$/);   # Ne lisons pas le corps des articles.
       @newsgroups=split(/,/,$1) if (/^Newsgroups: (.*)$/i);
       @followup=split(/,/,$1)  if(/^Followup-To: (.*)$/i);
       #@path=split(/!/,$1) if (/^path: (.*)$/i);
       if ($localfromdone) {
         if (!(/:/)) {
           $localfrom .= $_;
         }
         $localfromdone = 0;
       }
       if (/^From: (.*)$/i) {
         $localfrom = $1;
         $localfromdone = 1;
       }
     }
     close ART;
     $localfrom =~ s/^\s*(.*)\s+<(.*)>\s*$/$2/;
     $localfrom =~ s/^\s*(\S+)\s+\((.*)\)\s*$/$1/;
     $localfrom =~ s/^.*<(.*)>.*$/$1/;
     $localfrom = decode('MIME-Header', $localfrom);
     if ($#newsgroups eq 0) { #gt 0$newsgroups[0] eq $group) {
        $articles{$group}++;
        $arts{$localfrom}++;
        $totalart++;
        #$feeds{$path[1]}++;
     }
     else {                   #if ($#newsgroups gt 0) {  # && $newsgroups[0] eq $group) {
       if ($newsgroups[0] eq $group) {
         $arts{$localfrom}++;
         $artscr{$localfrom}++;
         $totalart++;
       }
       $articles{$group}++;
       $crossposts{$group}++;
     }
     if ($#followup ge 0) {
       $follows{$group}++ if ($#newsgroups > 0);
       if ($#followup ge 1) {
    $followbad{$group}++;
    next;
  }
     }
   };
   closedir(GROUPDIR);
};
};
getopts('f:') || &usage;
&usage if (!$opt_f);
&read_grp($opt_f);
printf("Ce tableau reflète le nombre d'articles qui ont été postés (sans
être annulés) dans chaque groupe de la hiérarchie au cours des deux
derniers mois (trois pour les forums modérés). Les colonnes suivantes
représentent respectivement le nombre d'articles crucipostés, leur
pourcentage, le pourcentage des précédents articles possédant un champ
« Followup-to: », et le nombre d'articles ayant plusieurs forums dans
le champ « Followup-to: ».\n\n");
printf("%-35.35s | Arts  | Cross | %% Cr.   | %% Fol.  |  Bad |\n","Groupe");
printf("------------------------------------|-------|-------|---------|---------|------|\n");
foreach $key (sort keys(%groupname)) {
   process_group($groupname{$key});
   if ($articles{$key} == 0) {
     $percentcross=0;
   }
   else {
     $percentcross=($crossposts{$key}*100.0)/$articles{$key};
   };
   if ($crossposts{$key} == 0) {
     $percentfoll=0.0;
   }
   else {
     $percentfoll=($follows{$key}*100)/$crossposts{$key};
   };
   printf("%-35.35s |  %4d |  %4d | %6.2f%% | %6.2f%% | %4d |\n"
           ,$key,$articles{$key},$crossposts{$key},$percentcross,
           $percentfoll, $followbad{$key});
};
printf ("\n\nNombre total d'articles : %d\n",$totalart);
printf ("\n\nVoici la liste des posteurs de « fr.* » (seule l'adresse électronique
est utilisée). Ce tableau offre de précieux renseignements quant à la
composition des autochtones de cette hiérarchie.\n\n
(seuls les 100 premiers posteurs sont affichés)\n\n");
printf("%4s | %-29.29s|  %5s | %7s | %8s |\n",
          "Rang","Posteur","Arts","Poids","Cross");
printf("-----|------------------------------|--------|---------|----------|\n");
foreach $key (sort { $arts{$b} <=> $arts{$a} } keys(%arts)) {
   $count++;
   printf("%4d | %-29.29s|  %5d | %6.2f%% | %7.2f%% |\n",
          $count,$key,$arts{$key},($arts{$key}*100)/$totalart,
          ($artscr{$key}*100)/$arts{$key});
   last if ($count == 100);
};
exit 0;
Et voilà, à voir comme le souligne Jean-Paul, si ce genre de stats intéresse du monde.
--
Julien ÉLIE
« Plus j'y pense, plus je me dis qu'il n'y a aucune raison pour que le
   carré de l'hypoténuse soit égal à la somme des carrés des deux autres
   côtés. » (San-Antonio)

Date Sujet#  Auteur
22 Feb 26 * Script de stats ?17Julien ÉLIE
22 Feb 26 +* Re: Script de stats ?14Olivier Miakinen
23 Feb 26 i+* Re: Script de stats ?12Gosseyn
23 Feb 26 ii`* Re: Script de stats ?11M.V.
23 Feb 26 ii +- Re: Script de stats ?1Olivier Miakinen
24 Feb 26 ii `* Re: Script de stats ?9Gosseyn
24 Feb 26 ii  `* Re: Script de stats ?8M.V.
24 Feb 26 ii   +* Re: Script de stats ?6yves
24 Feb 26 ii   i`* Re: Script de stats ?5Gosseyn
24 Feb 26 ii   i `* Re: Script de stats ?4yves
24 Feb 26 ii   i  +- Re: Script de stats ?1Jean-Paul
25 Feb 26 ii   i  `* Re: Script de stats ?2M.V.
25 Feb 26 ii   i   `- aspect de la liste des groupes dans le lecteur de news (was: Script de stats ?)1yves
24 Feb 26 ii   `- Re: Script de stats ?1Gosseyn
23 Feb 26 i`- Re: Script de stats ?1Julien ÉLIE
23 Feb 26 +- Re: Script de stats ?1Jean-Paul
27 Feb 26 `- Re: Script de stats ?1The Mover

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal