Communauté sur les Eggdrops - Community about Eggdrops
Statistiques d'un canal dans une page HTML - Printable Version

+- Communauté sur les Eggdrops - Community about Eggdrops (https://forum.eggdrop.fr)
+-- Forum: Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum: Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Thread: Statistiques d'un canal dans une page HTML (/showthread.php?tid=1304)



Statistiques d'un canal dans une page HTML - CrazyCat - 19/01/2013

Ce n'est pas la première fois que l'on me demande comment mettre le nombre de connectés d'un canal dans une page html.

Voici un petit code fonctionnel (mais pas du tout optimum).
Il suffit d'avoir un template de la page de sortie dans lequel la chaîne NB_USERS sera remplacée par le nombre d'utilisateurs.

tcl
set schan "#canal"
set template "/home/user/template.html"
set sfile "/home/user/count.html"
 
bind join - "$schan *" statcount
bind part - "$schan *" statpart
 
proc statpart { nick uhost handle chan {msg ""} } {
   statcount $nick $uhost $handle $chan
   return 0;
}
 
proc statcount { nick uhost handle chan } {
   set fi [open $::template r]
   set lines [read -nonewline $fi]
   close $fi
   set tot [llength [chanlist $chan]]
   regsub -all -- NB_USERS $lines $tot lines
   set fo [open $::sfile w]
   puts $fo $lines
   close $fo
   return 0
}




RE: Statistiques d'un canal dans une page HTML - kipof - 11/02/2013

Salut CrazyCat,
Après avoir vue ton script bien sympathique qui est dans la catégorie inutile mais surtout indispensable :p j'ai fait une petite mise en place chez moi et semble bien marcher :)

Mais faut dire qu'il y'a toujours un chieur :p ( et là c'est moi :D ) Alors petit problème avec le statpart qui marche pas trop chez moi :/ mais le join nickel :) une petite idée sur le problème ?


tcl
set schan "#jeuxfr.quizz"
set template "/home/jeuxfr/eggdrop/oxys/scripts/template.php"
set sfile "/home/jeuxfr/www/index.php"
 
bind join - "$schan *" statcount
bind part - "$schan *" statpart
 
proc statpart { nick uhost handle chan {msg ""} } {
   statcount $nick $uhost $handle $chan
   return 0;
}
 
proc statcount { nick uhost handle chan } {
   set fi [open $::template r]
   set lines [read -nonewline $fi]
   close $fi
   set tot [llength [chanlist $chan]]
   regsub -all -- NB_USERS $lines $tot lines
   set fo [open $::sfile w]
   puts $fo $lines
   close $fo
   return 0
}


Comme tu peux voir j'ai rien touché :)
Et autre petite question je voudrais ajouter deux autres chans sur le script du genre :


Code:
set schan(1) "#jeuxfr.quizz"
set schan(2) "#jeuxfr.motus"
set schan(3) "#jeuxfr.village"
Mais je vois pas trop comment modifier le reste du code :p donc un petit coup de pousse si possible m'aiderai bien :)

Merci d'avance :) ( j'ai fini )

EDIT: le part fonctionne mais le temps est plus long que le join a afficher :)


RE: Statistiques d'un canal dans une page HTML - CrazyCat - 11/02/2013

Ok pour le part, tu m'as fait peur :)
Pour faire fonctionner avec plusieurs canaux, deux options:
- générer les binds pour chaque canal (simple à mettre en oeuvre mais lourd s'il y a beaucoup de canaux),
- avoir des procédures globales (pour tous les canaux) qui vérifient tout d'abord si le canal est à surveiller (très consommateur de cpu).

Par contre, il faudrait savoir si tu veux des fichiers différents pour chaque canal ou pas


RE: Statistiques d'un canal dans une page HTML - kipof - 11/02/2013

C est juste pour les trois chans que j ai indiqué. J ai test avec les binds par chans mais ça marche pas trop :/


RE: Statistiques d'un canal dans une page HTML - CrazyCat - 11/02/2013

Ben oui, tout va dans le même fichier, donc il contient à chaque fois le nombre d'utilisateur du dernier canal où il y a eu un join ou un part.


RE: Statistiques d'un canal dans une page HTML - kipof - 12/02/2013

Hum, pas si simple du coup


RE: Statistiques d'un canal dans une page HTML - CrazyCat - 12/02/2013

Peut être que le script suivant t'aidera:

tcl
set schan(jeuxfr.quizz) "quizz"
set schan(jeuxfr.motus) "motus"
set schan(jeuxfr.village) "village"
 
set template "/home/user/template.html"
set sfile "/home/user/%fname.count.html"
 
foreach chan [array names $schan] {
	bind join - "#$chan *" statcount
	bind part - "#$chan *" statpart
}
 
proc statpart { nick uhost handle chan {msg ""} } {
   statcount $nick $uhost $handle $chan
   return 0;
}
 
proc statcount { nick uhost handle chan } {
   set fi [open $::template r]
   set lines [read -nonewline $fi]
   close $fi
   set tot [llength [chanlist $chan]]
   regsub -all -- NB_USERS $lines $tot lines
   regsub -all %fname $::sfile $::schan([string range $chan 1 end]) cfile
   set fo [open $cfile w]
   puts $fo $lines
   close $fo
   return 0
}




RE: Statistiques d'un canal dans une page HTML - kipof - 12/02/2013

(11/02/2013, 22:49)CrazyCat Wrote: Par contre, il faudrait savoir si tu veux des fichiers différents pour chaque canal ou pas
Oui, pardon j'avais pas vue le poste sur mobile c'est la daube xD donc un NB_USERSquizz NB_USERSmotus ect

Je regarde ton dernier script ce soir mais si j'ai bien compris il calcul les trois non ? ( pas test encore :p ) mais merci :)


RE: Statistiques d'un canal dans une page HTML - CrazyCat - 12/02/2013

(12/02/2013, 20:12)kipof Wrote: Je regarde ton dernier script ce soir mais si j'ai bien compris il calcul les trois non ? ( pas test encore :p ) mais merci :)
Le script donné crée un fichier par canal, en renommant le fichier de sortie en fonction de ce qu'il y a dans schan(canal).


RE: Statistiques d'un canal dans une page HTML - kipof - 13/02/2013

Ah bien ( d'ou le pas test :p ) le truc est que je voulais test d'afficher les trois sur la même page ( index ) ou sont annoncé les trois chans de jeux disponible sur le réseau. J'avais voulu faire plus simple du genre trois bot qui gère chacun le nombre de connecté sur son chan mais le problème ( Ouai c'est jamais facile ) est vue qu'ils doivent gérer l'index les deux autres chans sont jamais renseigné ( ce qui est normale si on réfléchi :° )

Je me serais jamais cassé la tête si j'avais pas lus ce topic :p


RE: Statistiques d'un canal dans une page HTML - CrazyCat - 13/02/2013

Si tu veux mettre les stats des 3 canaux dans un seul fichier, il faudra boucler sur les 3 canaux dans la procédure statcount afin de remplir 3 variables et de les substituer dans ton template. Enfin, c'est la méthode bourrin, parce que tu peux aussi juste mettre à jour une variable globale et chaque fois recompter pour le canal sélectionné, mais cela implique une initialisation lorsque ton eggdrop entre sur les canaux, ou lors d'un retour de netsplit.


RE: Statistiques d'un canal dans une page HTML - cestlemien - 14/02/2013

salut,
Petite apparté ( chieur² lol ) il s'avere que ce TCL ne fonctionne que si l'on possede un shell ( serveur), il fonctionne trés bien, neamoins, pas ou peu d'infos pour ce qui n'ont pas cette chance, et utilisent un truc type pages perso ( orange, free ect .. ) la methode n'est pas la meme, serait il possible que quelqu'un s'y colle ( pas moi, hors de mes competences, dsl)
Mais j'avoue que j'ai beaucoup cherché à mes debuts sur le comment faire, et malheureseusement je n'ai jamais reussi à l'époque.

cordialement.


RE: Statistiques d'un canal dans une page HTML - CrazyCat - 14/02/2013

Il n'y a rien de plus simple à faire dans un tel cas.
Il suffit d'avoir une page de mise à jour (en php par exemple) à laquelle on passe les différentes valeurs en GET, et que la page génère la nouvelle page de stats.
Donc, il faut que le script utilise le package http, pour aller sur http://ton.hebergeur/tapage.php?canal=machin&users=X