[Richard Suchenwirth] 2007-06-05 - If you want to see what's going on in the [Tcl chatroom], but don't have a chat client available, the following script retrieves the current day's log via [http] and renders it in [HTML] to stdout. Redirect it into a file, point your browser to it, enjoy! :^) #!/usr/bin/env tclsh set usage { usage: today.tcl > today.html Retrieve today's chat log, format into HTML on stdout } set base http://tclers.tk/conferences/tcl/ if {$argv eq "-h"} {puts $usage; exit 1} proc main argv { package require http set date [clock format [clock sec] -format %Y-%m-%d] #http::config -proxyhost proxy -proxyport 80 set token [http::geturl $::base/$date.tcl -headers {Pragma no-cache}] puts "Tclers' Chat of $date" eval [html'escape [http::data $token]] puts
[clock format [clock sec]] } interp alias {} html'escape {} string map {< < > > & &} #-- All chat entries invoke [m] proc m {time who what} { if {$who eq "ijchain"} { set who [lindex [split $what] 0] if {$who eq "***"} {set who ""} set what [join [lrange [split $what] 1 end]] } set what [string map {\n
} $what] if {$who eq ""} { #-- join/leave message puts "
* $what" } elseif {[string match /me* $what]} { #-- "action" puts "
$who [string range $what 4 end]" } else { #-- regular message puts "
$who: $what" } } main $argv ---- [RS] update: added Pragma no-cache and \n substitution (for multi-line posts). Notice that the html'escape alias got garbled: the [string map] makes no sense. Replace with (removing the _): < &_lt_; > &_gt_; & &_amp_; ---- [LV] 2007 June 05 - well, this seems to provide the heart of a [CGI] script to display the chat. With some work on generating input to the chat from CGI, we could be back in the chat room ;-) ... [RS] Yes indeed. If [Tkabber] could take chat posts from a HTTP POST, that would be even easier - the above script would at the end produce an entry widget and a Post button which would do the right thing... ---- [Category Example]