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)
Haut de la page
Les messages affichés proviennent d'usenet.
NewsPortal