Artifact Content

Artifact 499f67fd8d8c9785603e0d4b058b2b38bd289a5e:

Wiki page [Example script] by schelte 2014-04-17 19:55:29.
D 2014-04-17T19:55:29.247
L Example\sscript
P 8938fcf13b3c84d32f848a75d82d3c4eaff858d5
U schelte
W 917
This example script will stream all mp3 files in the current directory to a local icecast server.
<hr><pre>
package require shout

proc stream {fd1 fd2} {
    puts -nonewline $fd2 &#91;read $fd1 4096&#93;
    if {&#91;eof $fd1&#93;} {
        close $fd1
        nextsong $fd2
    }
}

proc nextsong {shout} {
    global playlist
    if {&#91;llength $playlist&#93; > 0} {
        set playlist &#91;lassign $playlist file&#93;
        set fd &#91;open $file rb&#93;
        fileevent $shout writable &#91;list stream $fd $shout&#93;
        fconfigure $shout -song &#91;file rootname &#91;file tail $file&#93;&#93;
    } else {
        exit
    }
}

set fd &#91;shout -user tcl -mount /tclradio -format mp3 \
  -genre rock -name "Tcl Radio" 127.0.0.1 8000 hackme&#93;
fconfigure $fd -buffering none

set playlist &#91;glob -nocomplain *.mp3&#93;

nextsong $fd

vwait forever
</pre><hr>
Z 5c6b37baedff937e1345ee6b0d6dc988