Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


nick list dans fichier html
#1
Bonjour, je viens car j'avais trouvé à une periode
un petit tcl qui permet d'enregistrer la liste des users dans un fichier html.

Voici le code

tcl
###################################
########### Liste users ###########
###################################
 
set canal "#accueil"
set fichier "/home/loulou/public_html/liste.html"
 
bind join - "$canal *" list:join
bind part - "$canal *" list:part
bind sign - "$canal *" list:quit
 
proc list:join {nick uhost handle chan} { list:log; }
proc list:part {nick uhost handle chan text} {
    if {$nick != $::botnick} { list:log; }
}
proc list:quit {nick uhost handle chan text} {
    if {$nick != $::botnick} { list:log; }
}
 
proc list:log {} {
    set fp [open $::fichier w]
    foreach cnick [chanlist $::canal] {
        if { $cnick == $::botnick } { continue; }
        if { [isop $cnick $::canal] == 1 } {
            set st "@"
        } elseif { [ishalfop $cnick $::canal] == 1 } {
            set st "%"
        } elseif { [isvoice $cnick $::canal] == 1 } {
            set st "%"
        } else {
            set st ""
        }
        puts $fp "$st$cnick<br />"
    }
    close $fp
}
 
##########
# Putlog #
##########
#
putlog "nick list par CrazyCat"


Le systeme de differencier les @, les % et les normaux fonctionne bien, j'aurais aimer savoir si il etait possible sur cette page html d'y mettre un fond, et d'associer par exemple la couleur rouge pour les @, Bleue pour les % et Vert pour les normaux mais aussi de classer par ordre sur le fichier par exemple les @ en premiers , les % en deuxiemes et les normaux en troisiemes.

comme ceci

@Niubot
@Popcorn

%loulou
%steph
%Tiger

ben
joe
cindy


Si quelqu'un peut m'aider, merci d'avance
#2
Voici ce que ça peut donner, sans optimisation:

tcl
###################################
########### Liste users ###########
###################################
 
set canal "#accueil"
set fichier "/home/loulou/public_html/liste.html"
 
bind join - "$canal *" list:join
bind part - "$canal *" list:part
bind sign - "$canal *" list:quit
 
proc list:join {nick uhost handle chan} { list:log; }
proc list:part {nick uhost handle chan text} {
    if {$nick != $::botnick} { list:log; }
}
proc list:quit {nick uhost handle chan text} {
    if {$nick != $::botnick} { list:log; }
}
 
set u(op) {}
set u(hop) {}
set u(vop) {}
set u(nop) {}
 
proc list:log {} {
    foreach cnick [chanlist $::canal] {
        if { $cnick == $::botnick } { continue; }
        if { [isop $cnick $::canal] == 1 } {
            lappend ::u(op) $cnick
        } elseif { [ishalfop $cnick $::canal] == 1 } {
            lappend ::u(hop) $cnick
        } elseif { [isvoice $cnick $::canal] == 1 } {
            lappend ::u(vop) $cnick
        } else {
            lappend ::v(op) $cnick
        }
    }
    save:log
}
 
proc save:log {} {
	set fp [open $::fichier w]
	foreach nick $::u(op) {
		puts $fp "<span style='font-color:red;'>@$nick</span><br />"
	}
	foreach nick $::u(hop) {
		puts $fp "<span style='font-color:blue;'>%$nick</span><br />"
	}
	foreach nick $::u(vop) {
		puts $fp "<span style='font-color:yellow;'>+$nick</span><br />"
	}
	foreach nick $::u(nop) {
		puts $fp "<span style='font-color:green;'>$nick</span><br />"
	}
	close $fp
}
 
##########
# Putlog #
##########
#
putlog "nick list par CrazyCat"

zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#3
J'ai donc modifié comme indiqué, les catégories @ % et normaux sont ien classées, mais je n'ai pas la couleur et
je me retrouve avec plusieurs fois les pseudos.

comme ceci

@niubot
@popcorn
+loulou
+joe
+sarah
cindy
@niubot
@popcorn
+loulou
+joe
+sarah
cindy
@niubot
@popcorn
+loulou
+joe
+sarah
cindy

Environ 10 fois lol
#4
En fait je pense que quand quelqu'un join ou quit le chan, ca ecrit dans liste.html à
la suite de la précedente ecriture, ca doit etre pour ca que ca apparait plusieurs fois.
#5
Ouais, j'ai un peu foiré mon code, j'ajoute toujours dans les listes sans retirer... Tout àa à cause d'une erreur d'initialisation (placée au mauvais endroit).
Et pour les couleurs, c'est color et non pas font-color qu'il faut utiliser.
Ce qui donne donc:

tcl
###################################
########### Liste users ###########
###################################
 
set canal "#accueil"
set fichier "/home/loulou/public_html/liste.html"
 
bind join - "$canal *" list:join
bind part - "$canal *" list:part
bind sign - "$canal *" list:quit
 
proc list:join {nick uhost handle chan} { list:log; }
proc list:part {nick uhost handle chan text} {
    if {$nick != $::botnick} { list:log; }
}
proc list:quit {nick uhost handle chan text} {
    if {$nick != $::botnick} { list:log; }
}
 
proc list:log {} {
   set ::u(op) {}
   set ::u(hop) {}
   set ::u(vop) {}
   set ::u(nop) {}
    foreach cnick [chanlist $::canal] {
        if { $cnick == $::botnick } { continue; }
        if { [isop $cnick $::canal] == 1 } {
            lappend ::u(op) $cnick
        } elseif { [ishalfop $cnick $::canal] == 1 } {
            lappend ::u(hop) $cnick
        } elseif { [isvoice $cnick $::canal] == 1 } {
            lappend ::u(vop) $cnick
        } else {
            lappend ::v(op) $cnick
        }
    }
    save:log
}
 
proc save:log {} {
   set fp [open $::fichier w]
   foreach nick $::u(op) {
      puts $fp "<span style='color:red;'>@$nick</span><br />"
   }
   foreach nick $::u(hop) {
      puts $fp "<span style='color:blue;'>%$nick</span><br />"
   }
   foreach nick $::u(vop) {
      puts $fp "<span style='color:yellow;'>+$nick</span><br />"
   }
   foreach nick $::u(nop) {
      puts $fp "<span style='color:green;'>$nick</span><br />"
   }
   close $fp
}
 
##########
# Putlog #
##########
#
putlog "nick list par CrazyCat"

zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#6
Ah oui Impeccable, les pseudos sont en couleurs.

Par contre j'aimerais savoir comment faire pour avoir une mise en page pour cette liste.html ?

Mettre un fond de la page principale genre en noir
Que les pseudos soit incorporés dans un tableau
Avoir le nombre total d'users connectés

?????
#7
Heu, la tu as toutes les bases.

Modifie save:log pour faire toute la mise en forme html que tu veux, ajoute un compteur, ... Je ne vais pas tout faire non plus, le html c'est simple comme <h1>hello world</h1>
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#8
Non je me doute bien que tu vas pas tout faire,
c'est juste pour savoir si c'est faisable à partir de ce tcl, d'integrer dedans une mise
en forme pour la page html aussi.

Mais disont que jme demande un peu comment faire car pour integrer les pseudos
dans un tableau, vu qu'on ne sais pas combien il ya d'users comment definir le nombres de lignes et de colones du tableau lol.
#9
J'ai testé de mettre le code html pour le fond


Code:
<div style='background:black;'>  </div>
Mais ca ne prend pas lol.
#10
Bon, avant que ça ne me fatigue:
Le script tcl

Code:
###################################
########### Liste users ###########
###################################

set canal "#accueil"
set fsource "/home/loulou/liste.tpl"
set fichier "/home/loulou/public_html/liste.html"

bind join - "$canal *" list:join
bind part - "$canal *" list:part
bind sign - "$canal *" list:quit

proc list:join {nick uhost handle chan} { list:log; }
proc list:part {nick uhost handle chan text} {
    if {$nick != $::botnick} { list:log; }
}
proc list:quit {nick uhost handle chan text} {
    if {$nick != $::botnick} { list:log; }
}

proc list:log {} {
   set ::u(op) {}
   set ::u(hop) {}
   set ::u(vop) {}
   set ::u(nop) {}
   set ::count 0
    foreach cnick [chanlist $::canal] {
        if { $cnick == $::botnick } { continue; }
        incr ::count
        if { [isop $cnick $::canal] == 1 } {
            lappend ::u(op) $cnick
        } elseif { [ishalfop $cnick $::canal] == 1 } {
            lappend ::u(hop) $cnick
        } elseif { [isvoice $cnick $::canal] == 1 } {
            lappend ::u(vop) $cnick
        } else {
            lappend ::v(op) $cnick
        }
    }
    save:log
}

proc save:log {} {
   set fp [open $::fichier w]
   set fi [open $::fsource r]
   set tpl [read $fi -nonewline $fi]
   close $fi
   $ulist = ""
   foreach nick $::u(op) {
       append $ulist "<tr><td style='color:red;'>@$nick</td></tr>\n"
   }
   foreach nick $::u(hop) {
      append $ulist "<tr><td style='color:blue;'>%$nick</td></tr>\n"
   }
   foreach nick $::u(vop) {
      append $ulist "<tr><td style='color:yellow;'>+$nick</td></tr>\n"
   }
   foreach nick $::u(nop) {
      append $ulist "<tr><td style='color:green;'>$nick</td></tr>\n"
   }
   regsub -all %count $tpl $::count tpl
   regsub -all %channel $tpl $::canal tpl
   regsub -all %list $tpl $ulist tpl
   fputs $fp $tpl
   close $fp
}

##########
# Putlog #
##########
#
putlog "nick list par CrazyCat"
Le fichier template
A mettre dans /home/loulou/liste.tpl

Code:
<html>
<head>
<title>Les %count connectés sur %channel</title>
<style>body { background-color: black; }</style>
</head>
<body>
<table>
    <tr><th>Il y a %count personnes sur %channel</th></tr>
    %list
</table>
</body>
</html>
Et je n'aide plus sur ce sujet, tu as toute la solution.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#11
Merci beaucoup CrazyCat,
c'est juste ce que je voulais savoir, ma question savoir si on pouvais integrer la mise en page directement dans le tcl de base.

Mais apparement voila il fallait avoir un autre fichier le template.

Je vais voir maintenant pourquoi ca n'ecrit plus dans mon fichier liste.html et que ca donne une erreur


Code:
Tcl error [list:join]: wrong # args: should be "read channelId ?numChars?" or "read ?-nonewline? channelId"
Merci encore je vais me pencher dessus maintenant.
#12
Voila j'ai modifié dans le fichier liste.tpl
pour faire la mise en page.

Par contre je n'avais pas fait attention, mais il y a un soucis au niveau de l'ecriture des pseudos dans le fichier et du compteur.

Exemple :
sur Chanel il y a déjà les personnes suivantes.
Niubot
popcorn

quand on consulte la page elle indique 2 personnes sur le canal, mais elle n'a ecrit que le pseudo de niubot.

si Cindy75 join le canal, la page indique 3 personnes sur le canal, mais il y a toujours que le pseudo de niubot d'ecrit.

et seulement si une autre personne join le canal, là la page indique 4 personnes sur le canal et elle écrit le pseudo de 2 personnes. Le pseudo des 2 premières personnes qui étaient déjà sur le canal.

Je ne vois pas de quoi ca peut venir.

Si quelqu'un a une idée, je suis preneur.

Merci
#13
Effectivement, il y avait quelques erreurs de frappe.

Celui-ci est testé et donc fonctionnel.

Code:
###################################
########### Liste users ###########
###################################

set canal "#accueil"
set fsource "/home/loulou/liste.tpl"
set fichier "/home/loulou/public_html/liste.html"

bind join - "$canal *" list:join
bind part - "$canal *" list:part
bind sign - "$canal *" list:quit

proc list:join {nick uhost handle chan} { list:log; }
proc list:part {nick uhost handle chan text} {
    if {$nick != $::botnick} { list:log; }
}
proc list:quit {nick uhost handle chan text} {
    if {$nick != $::botnick} { list:log; }
}

proc list:log {} {
   set ::u(op) {}
   set ::u(hop) {}
   set ::u(vop) {}
   set ::u(nop) {}
   set ::count 0
    foreach cnick [chanlist $::canal] {
        if { $cnick == $::botnick } { continue; }
        incr ::count
        if { [isop $cnick $::canal] == 1 } {
            lappend ::u(op) $cnick
        } elseif { [ishalfop $cnick $::canal] == 1 } {
            lappend ::u(hop) $cnick
        } elseif { [isvoice $cnick $::canal] == 1 } {
            lappend ::u(vop) $cnick
        } else {
            lappend ::u(nop) $cnick
        }
    }
    save:log
}

proc save:log {} {
   set fp [open $::fichier w]
   set fi [open $::fsource r]
   set tpl [read -nonewline $fi]
   close $fi
   set ::ulist ""
   foreach nick $::u(op) {
       append ::ulist "<tr><td style='color:red;'>@$nick</td></tr>\n"
   }
   foreach nick $::u(hop) {
      append ::ulist "<tr><td style='color:blue;'>%$nick</td></tr>\n"
   }
   foreach nick $::u(vop) {
      append ::ulist "<tr><td style='color:yellow;'>+$nick</td></tr>\n"
   }
   foreach nick $::u(nop) {
      append ::ulist "<tr><td style='color:green;'>$nick</td></tr>\n"
   }
   regsub -all %count $tpl $::count tpl
   regsub -all %channel $tpl $::canal tpl
   regsub -all %list $tpl $::ulist tpl
   puts $fp $tpl
   close $fp
}

##########
# Putlog #
##########
#
putlog "nick list par CrazyCat"
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#14
Ca marche impec quand quelqu'un rentre ca ajoute bien,
mais quand une personne part ou quit ca ne l'enleve pas de la liste.

Elle s'enleve de la liste si quelqu'un d'autre join ou quit le chan bizare.


EDIT: En fait je rectifie, ca enleve bien le pseudo mais pas immediatement faut attendre un peu, alors que quand un pseudo join le salon et qu'on actualise la page il est déja ecrit.

ENVIRON 5 minutes apres il s'enleve de la liste
#15
Par contre, Je me posais une question,
dans le
tcl
set canal "#accueil"


Il n'est pas possible de rajouter un autre salon ??

Car du coup je me disais peut etre mettre sur la meme page html la liste d'un autre salon ???


Possibly Related Threads…
Thread Author Replies Views Last Post
  Modifier un nick par badnick pheeric 8 1,546 01/11/2020, 23:20
Last Post: pheeric
  [Résolu] récupérer texte dans page html BrYcOu 5 5,734 22/09/2015, 06:46
Last Post: BrYcOu
  [Demande] Opé Sur Host et Non sur Nick BaGrift 16 10,319 26/06/2014, 13:48
Last Post: BaGrift
  [Demande] Récupérer certaines infos dans fichier .user Hitsu 5 5,204 30/07/2013, 17:13
Last Post: CrazyCat
  Statistiques d'un canal dans une page HTML CrazyCat 12 7,774 14/02/2013, 12:37
Last Post: CrazyCat
  Déclarer $nick dans msgcat. aliasangelius 5 5,034 04/09/2012, 16:27
Last Post: CrazyCat
  Enregistrer dans un fichier une demande ZoZo 3 4,599 11/05/2012, 17:52
Last Post: aliasangelius
  Problème de phrases dans un fichier ReT 3 4,409 25/01/2012, 03:27
Last Post: ReT
  [Recherche] messages fun dans un fichier .txt ReT 7 5,533 27/11/2011, 23:40
Last Post: ReT
  problèmes de collision lors d'opérations d'écriture dans un fichier MenzAgitat 4 4,951 28/06/2011, 20:12
Last Post: djkenny

Forum Jump:


Users browsing this thread: 1 Guest(s)